org-imagine-view
后会添加多个图片链接。
你这里的写法可以改成以下形式,更精简
#+IMAGINE: draw.io.exe -x -f png -o %{%o.png} %f
%o.png 会替换成 org-imagine 自动生成的文件名(包括时间戳),当然除非确实想自己取名并维护这个图片文件, 那么还可以用以下写法
#+IMAGINE: draw.io.exe -x -f png -o %{./20220905_230104.png} %f
每次执行生成一个新图片链接是设计上的安排,因为有些场景会需要多个图片,比如每天对 drawio 文件执行一次 org-imagine-view,这样可以保存每天的设计的快照。如果不需要的话,就是手动删除一行的成本,或者马上执行一次 undo,因此不对图片链接进行覆盖。
当积累的图片快照多了,可以执行 org-imagine-clear-cache 来删除那些没有被当前项目目录里的 org 文件引用的图片文件,前提是这些文件都在 org-imagine-cache-dir 里,默认是 ./.org-imagine/ 目录,用 %o.png 的话自动就保存在这。(这个命令依赖 projectile 和 grep)
好的。明白了。
最近做了一些更新:
- 异步执行图片生成命令
- 支持 http 和 https 开头的来自网页的链接,这样用 wget 就可以直接下载网页图片,做笔记比较方便(和 org-download 类似,但直接保留了图片原始链接在 org 里),还可以在 org 里加上类似某些博客框架中的随机生成文章封面的效果:
-
生成的新图片默认覆盖原图片。上图 gif 中有体现, 每次执行完 org-imagine-view 后覆盖上一个图,这和 org-imagine: 对 org 对象进行可视化的插件 - #10,来自 owensys 提到的需求一样,可以通过
(setq org-imagine-is-overwrite nil)
取消覆盖。 -
自动忽略 ATTR_xxx 属性行,因此可以比较方便设置图片大小,以上 gif 里也有体现。
-
把 view 目录作为 submodule , 使得这个包作为纯粹的 emacs package
-
在 README 加入更详细说明
这个更新真不错,马上来试一试
运行 org-imagine-view
时遇到错误:
path-no-ext?: Symbol’s function definition is void: f-no-ext
查了一下,似乎依赖 f.el 这个包。
感谢,都是这几个月自己用的过程中攒的需求,这两天有空一并加上了
确实,我自己还没在 emacs -q 下测试过 ,以为这个函数是内置的,当前已经加上了,感谢
又发现个小问题:文件名包含空格时执行的命令不正确。
#+imagine: pdfsnap.py -s 600
[[pdf:1 2.pdf::1]]
[[file:pdftoppm version 22.11.0
Copyright 2005-2022 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011, 2022 Glyph & Cog, LLC
Usage: pdftoppm [options] [PDF-file [PPM-file-prefix]]
-f <int> : first page to print
-l <int> : last page to print
-o : print only odd pages
-e : print only even pages
-singlefile : write only the first page and do not add digits
-scale-dimension-before-rotation : for rotated pdf, resize dimensions before the rotation
-r <fp> : resolution, in DPI (default is 150)
-rx <fp> : X resolution, in DPI (default is 150)
-ry <fp> : Y resolution, in DPI (default is 150)
-scale-to <int> : scales each page to fit within scale-to*scale-to pixel box
-scale-to-x <int>]]
这里文件 1 2.pdf
是存在的,如果将其重命名为 1.pdf
可以正确输出图片。
Very very good!
这个很不错,有点像include 的多协议支持,做成API应该可以扩充到支持很多的场境吗?比如 网页截取、office 文档、视频截屏什么 的
有把 手绘的 excalidraw 文件 转成图片, 来看吗?
谢谢,栓q …
只要有第三方程序能够生成这些图片,都是可以的,org-imagine 只是把写在 org 里的需要可视化的对象的内容(web 链接,文件路径等)传给 #+IMAGINE 后的命令行去执行,然后把命令行把生成的图片链接插入到下方再 preview 出来
我没有用 excalidraw , 不过只要有能根据文件来生成图片第三方工具就行,比如以下
当前修复了,感谢~
再反馈一个小问题:如果 #+imagine: ...
出现在 buffer 的结尾,那运行 org-imagine-view
会提示 End of buffer
,然后什么事都没发生。必须手动在后面随便加点文字,才能正常使用。
好的,这个是因为写的时候省懒直接从 #+IMAGINE 往下移动两行插入图片,没有做 end of buffer 判断导致,我后面有别的需求时再一起处理了🙏🏻
更新:
今天给 org-imagine 添加了与 GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI 里 text2img api 支持,可以在 org 里写 prompt 进行文生图(只支持单张图片).
上图的解释:
把图片的 prompt 和其他选项以 json 格式先写在一个 org block 里,tangle 到特定的文件后,org-imagine 把文件信息传给 sdtext2img.py 进行 api 请求处理, 返回的图片再从 org 中预览
更新:
添加了抽取代码块的功能
#+IMAGINE: "~/codes/parsing/lexer.py::class Lexer"
然后执行 org-imagine-view 会把 Lexer 类提取并以 python src block 的方式插入,我主要用来对某些代码片段写文字说明,或者引用到 org 里用 babel 执行,做简单的测试。
- 光标放在 IMAGINE 一行按 C-C ‘ 可以跳转到链接对应文件的代码 buffer
- 支持 org link abbreviation
- 目前支持 python 和 elisp。
具体见 README