バッファから画像を保存する方法は?


回答:


4

私の知る限り、*eww*バッファはdisplayテキストプロパティに画像データを格納します。

したがって、画像を保存するには、このプロパティを取得してファイルに保存する必要があります。

これがソリューションのスケッチです。

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

このコードは、私がテストした場合には機能するようですが、少なくとも2つの欠陥があります。

  • ファイルの種類やファイル名を検出できないため、拡張子付きのファイル名を指定する必要があります。
  • save-bufferここでは実際には意味をなさないbefore-save-hooksafter-save-hooksでフックを呼び出します。

これを改善する方法を知っている場合は、すぐに進んでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.