Como salvar imagens do buffer?

Respostas:

4

Tanto quanto posso dizer, os *eww*buffers armazenam os dados da imagem na displaypropriedade text.

Portanto, para salvar uma imagem, precisamos obter essa propriedade e salvá-la em um arquivo.

Aqui está um esboço de uma solução.

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

Esse código parece funcionar no caso em que o testei, mas tem pelo menos duas falhas:

  • Ele não pode detectar o tipo ou o nome do arquivo, portanto, você deve especificar o nome do arquivo com uma extensão.
  • save-bufferchama ganchos before-save-hookse after-save-hooks, o que realmente não faz sentido aqui.

Se você sabe como melhorar isso, vá em frente.

Constantine
fonte