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 displayvă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-buffergọi hook trong before-save-hooksvà 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.