能否让 org-mode 导出为 html 时自动将图片转为 base64

我在使用 org-mode 的过程中插入了不少本地的图片,但是在要分享文档时,我发现我导出的 html 中仍旧是使用 test.jpg 指向了我的本地图片 是否有插件或者lisp能够在 ‘C-c e h h’ 导出为 html 时,将本地图片替换为 base64 再导出?

导出的图片是这种格式 <img src="file:///e:/test.jpg" alt="test.jpg" />

尴尬,提完问题就在reddit找到了解决方案,如下:
https://www.reddit.com/r/orgmode/comments/7dyywu/creating_a_selfcontained_html/
不过需要注意的是,如果使用这种方式,则图片的链接格式不能如下:
[[file:./images/test.jpg]]
这样是无法导出的,要修改为如下格式:
[[./images/test.jpg]]

1 个赞

这是我的配置,他的可以在启动的时候就自动执行那串语句,不用每次启动都执行一遍

(defun org-org-html--format-image (source attributes info)
  (format "<img src=\"data:image/%s;base64,%s\"%s />"
      (or (file-name-extension source) "")
      (base64-encode-string
       (with-temp-buffer
	 (insert-file-contents-literally source)
	 (buffer-string)))
      (file-name-nondirectory source)))
(advice-add #'org-html--format-image :override #'org-org-html--format-image)
1 个赞