Wie speichere ich Bilder aus dem Puffer?

Antworten:

4

Soweit ich das beurteilen kann, *eww*speichern Puffer Bilddaten in der displayTexteigenschaft.

Um ein Bild zu speichern, müssen wir diese Eigenschaft abrufen und in einer Datei speichern.

Hier ist eine Skizze einer Lösung.

(defun my-eww-save-image (filename)
  "Save an image opened in an *eww* buffer to a file."
  (interactive "G")
  (let ((image (get-text-property (point-min) 'display)))
    (with-temp-buffer
      (setq buffer-file-name filename)
      (insert
       (plist-get (if (eq (car image) 'image) (cdr image)) :data))
      (save-buffer))))

Dieser Code scheint in dem Fall zu funktionieren, in dem ich ihn getestet habe, weist jedoch mindestens zwei Mängel auf:

  • Der Dateityp oder der Dateiname können nicht erkannt werden, daher müssen Sie den Dateinamen mit einer Erweiterung angeben.
  • save-bufferruft Hooks in before-save-hooksund after-save-hooks, was hier nicht wirklich Sinn macht.

Wenn Sie wissen, wie Sie dies verbessern können, fahren Sie bitte fort.

Konstantin
quelle