Tôi sử dụng eww để mở một hình ảnh từ wikipedia:
https://upload.wikidia.org/wikipedia/commons/6/6a/The_Burn_of_the_Hedd_of_Parliament.jpg
Bây giờ, tôi muốn lưu nó vào máy tính của tôi.
Làm thế nào tôi có thể làm điều đó?
Tôi sử dụng eww để mở một hình ảnh từ wikipedia:
https://upload.wikidia.org/wikipedia/commons/6/6a/The_Burn_of_the_Hedd_of_Parliament.jpg
Bây giờ, tôi muốn lưu nó vào máy tính của tôi.
Làm thế nào tôi có thể làm điều đó?
Câu trả lời:
Theo như tôi có thể nói *eww*
bộ đệm lưu trữ dữ liệu hình ảnh trong thuộc tính display
văn bản.
Vì vậy, để lưu hình ảnh, chúng ta cần lấy thuộc tính này và lưu nó vào một tệp.
Dưới đây là một bản phác thảo của một giải pháp.
(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))))
Mã này dường như hoạt động trong trường hợp tôi đã thử nó, nhưng nó có ít nhất hai lỗi:
save-buffer
gọi hook trong before-save-hooks
và after-save-hooks
, mà không thực sự có ý nghĩa ở đây.Nếu bạn biết làm thế nào để cải thiện điều này, xin vui lòng đi thẳng về phía trước.