Org-mode截图与显示图片(Windows 7)

org-mode下截图要怎么做啊?我在org-download里面看到截图可以用这几种工具gnome-screenshot or scrot or gm,但是这个要怎么在windows上实现啊? org-mode图片大小的显示设置在windows下不管用呢?在图片上一行加入#+ATTR_ORG: :width 300px不管用。网上说Imagemagick很好用,但是这个要怎么在windows上用啊?

没用过 org-download。把你截的图片插入 Org 不就完了吗?

ImageMagick 支持需要在编译 Emacs 期间开启(有安装的话,编译时会自动启用)。

window7电脑上没有这些截图工具啊,不知道怎么配置,这些截图工具在哪里下载?支持windows吗?

ImageMagick在编译的时候开启,我安装了ImageMagick,我应该怎么在org-mode里面进行设置让它对图片进行缩小呢?

截图什么的是基于linux窗口管理工具的,估计没法拿来用。顺带windows应该有自带的截图工具啊。 imagemagic 是要在编译是加入选项才有用的。 GNU/Emacs主页有教你怎么在windows下编译。中文资料也挺多。比如这个: http://emacsist.com/10177

不了解 Windows,Mac 和 Ubuntu 系统都自带了一个截图工具。各个平台下第三方截图工具也非常多,应该稍微搜索下就能找到。

依据 (elisp) ImageMagick Images

   To check for ImageMagick support, use the following:

     (image-type-available-p 'imagemagick)

返回 t 表示你的 Emacs 有 ImageMagick 支持。之后,看下 org-image-actual-width 的 doc-string,具体写法我不太记得了,论坛里之前讨论过。

谢谢 @xuchunyang @LdBeth 我知道怎么在Windows下截图了。 我在sourceforge上面下载的Emacs-64,这个好像不支持ImageMagick。

emacs的工作环境设置 - 简书

今天, 我在这里找到了在 win7 下的截图方法 用 i_view32 刚好我有用过这个软件, 记住环境变量里要加入

1 个赞

请问怎么在windows下截图?

当时我觉得麻烦所以就没有写代码,上面的帖子已经说的很清楚了,我把它加工了一下,已经可以很好的使用。 只要是你能找到命令行的软件,都可以放在emacs中,应该说windows下的软件是很丰富的,配置起来还是很容易的。

;; Code for capture from http://www.jianshu.com/p/77841e0aba46
(defun lxeg0429/capture ()
  "Take a screenshot into a unique-named file in the current buffer file
   directory and insert a link to this file."
  (interactive)
  (lower-frame) ;; 把emacs最小化
  (setq filename
        (concat (make-temp-name "img-") ".png"))
  ;; (shell-command (format "boxcutter C:/Total Commander/Software/Emacs/Files/Images/\"%s\"" filename))
  (shell-command (concat " \"C:/Total Commander/Software/IrfanView/i_view32.exe\" /capture=4 /convert=" "\"C:/Total Commander/Software/Emacs/Files/Images" (format "\\%s\"" filename)))  ;; IrfanView 截图
  (insert (concat "[[C:/Total Commander/Software/Emacs/Files/Images" filename "][capture]]"))
  ;; (shell-command (format " \"C:/Total Commander/Software/picpick/picpick.exe\" C:/Total Commander/Software/Emacs/Files/Images/\"%s\"" filename)) ;; 使用picpick来添加注释
)

@xuchunyang @LdBeth 可否帮忙给看一下上面的代码?谢谢! 我定义了(defvar Software "c:/Total Commander/Software/") ,我怎么才能把上面代码中的大串字符替换成关于Software有关的代码,这样可以简化代码。

concatformat

我想加concat, 但是不知道怎么加,我对代码不熟。我加的concat,emacs识别不了,所以来向你们求助了。

shell-command 不需要引号吧?

因为不是很了解 windows, 我只能建议你先弄明白用 cmd 或者别的什么需要输入什么命令,再确保传递给 shell-command 的字符串就是需要的命令。

至于 format 之类的用法,结合文档多试几次就可以学会了。

上面的代码可以运行,没有问题。就是不知道怎么简化,试了好多次了,我对lisp不了解,写的代码全都参考别人来的。没有在google上搜到类似的代码。

(setq lxeg0429-capture-path "C:/Total Commander/Software/Emacs/Files/Images" )
(defun lxeg0429/capture ()
  "Take a screenshot into a unique-named file in the current buffer file
   directory and insert a link to this file."
  (interactive)
  (lower-frame) ;; 把emacs最小化
  (let ((filename
         (concat (make-temp-name "img-") ".png"))
        (filepath lxeg0429-capture-path))
    (shell-command (concat " \"C:/Total Commander/Software/IrfanView/i_view32.exe\" /capture=4 /convert="
                           "\"" filepath (format "\\%s\"" filename))) ;; IrfanView 截图
    (insert (concat "[[" filepath filename "][capture]]")))
  )

差不多就这样。

哦,好的,谢谢了。又学了不少东西。

i_view32.exe /capture=2 /convert=c:\capture_$U(%d%m%Y_%H%M%S).jpg

在 i_options.txt 选项文件中看到这一段, 我想用日期时间格式来生成截图的文件名, elisp 不会, 试了几次都不行, 请教!

有个format-time-string可以用 示例:

(format-time-string "%Y%m%d%H%M%S")
==> "20170308195653"

emacs-lisp最基本的用法可以参考:


如果不怎么会lisp的话,把我的示例里面(make-temp-name "img-")用这个换掉就可以了。

谢谢! 我试试, 你说的叶文彬的前段时间是有在学,但只看了点就放下了, 因最近工作忙(本人非 IT人士)。

非IT人士+1 不见得一定要集中学习,要用到的时候看一看就可以了。

感觉这里应该是 user 居多,developer 占少数吧?我也是 user 一枚:stuck_out_tongue_closed_eyes: