elisp创建图片描述符

按照https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Images.html的说法,创建图片的方法有两种。一种是指定一个文件名,一种是提供一个包含图片数据的字符串。第一种方法,我这里测试能工作,但是第二种不行。第二种方法创建的描述符号,用insert-image插入到buffer,emacs一直都只显示一个只有单个字母大小的方格。图片数据是用insert-file-contents-literally从文件里直接读出来的。

有没有道友用过第二种方法?可有示例?这个问题我调了半天,始终解决不了。

读入二进制数据先关闭 multibyte

(create-image
 "<svg width=\"100\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"></svg>"
 'svg
 t)

(insert-image
 (svg-image
  (let ((svg (svg-create 100 100)))
    (svg-rectangle
     svg 0 0
     "100%" "100%" :fill-color "red")
    svg)))

(insert-image
 (create-image
  (with-temp-buffer
    (set-buffer-multibyte nil)
    (insert-file-contents-literally
     "/Users/xcy/src/emacs-mac/etc/images/splash.png")
    (buffer-string))
  'png t))

实测有效。我缺了关闭multibyte那一行。谢谢道友。