¿Cómo guardar imágenes del búfer?

Respuestas:

4

Por lo que puedo decir, los *eww*buffers almacenan datos de imágenes en la displaypropiedad de texto.

Entonces, para guardar una imagen, necesitamos obtener esta propiedad y guardarla en un archivo.

Aquí hay un boceto de una solución.

(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))))

Este código parece funcionar en el caso en que lo probé, pero tiene al menos dos fallas:

  • No puede detectar el tipo de archivo o el nombre del archivo, por lo que debe especificar el nombre del archivo con una extensión.
  • save-bufferllama a ganchos before-save-hooksy after-save-hooks, lo que realmente no tiene sentido aquí.

Si sabe cómo mejorar esto, siga adelante.

Constantina
fuente