Emacs 作为图片浏览器

发布于 2023-03-21 20:28:33 字数 3977 浏览 82 评论 0

image-mode

当用 Emacs 打开一张图片时,Emacs 会自动进入 image-mode,并显示出图片来,如果你的操作系统是 windows,默认是不支持显示图片的,那么请参考 windows 版本的 Emacs  无法显示图片的解决方法

image-mode 中,按下 n (image-next-file) 可以看同一个目录中的下一张图片,按下 p (image-previous-file) 则能查看同一目录下的上一张图片。

尤其需要说明的是,Emacs 能将 zip 等压缩文件当成目录来看待,因此你可以在 dired 中进入 zip 包并查看 zip 包中的图片,但是当你想通过 np 来查看 zip 同下/上一张图片时,会发现查看的并不会是 zip 中的图片,而是 zip 文件所在目录下的图片

你甚至可以按下 r (image-rotate) 来旋转图片,如果查看图片是类似gif这样的动态图片,刚打开图片时并不会自动播放该动画,你可以按下回车就可以让它动起来了,浏览动态图片时,image-mode还提供了以下一些快捷键:

f (image-next-frame)
查看下一帧图片
b (image-previous-frame)
查看上一帧的图片
F (image-goto-frame)
查看指定帧的图片
a + (image-increase-speed)
加快图片播放速度
a - (image-decrease-speed)
降低图片播放速度
a 0 (image-reset-speed)
还原图片播放速度
a r (image-reverse-speed)
重新播放图片

image-dired

Emacs 自带了一款名为 image-dired 的插件,它可以以缩略图的方式显示出目录中的图片,也可以浏览想看的图片,甚至能为图片加上标签说明:

下面是 image-dired 的视图,来自于 Xah Lee 的 http://ergoemacs.org

进入 image-dired

进入 image-dired 有两种方式:

一种是在 dired buffer 中 mark 好要显示缩略图的那些图片,然后按下 C-t d (image-dired-display-thumbs),Emacs会打开一个名为 *image-dired* 的 buffer,并且以缩略图的形式显示出那些被 mark 的图片。

还有一种方式是直接运行 M-x image-dired 然后输入包含图片的目录,这种情况下 Emacs 会打开 *image-dired* buffer,并以缩略图的形式显示出目录下 所有 的图片。

image-dired 相关操作

image-dired 的相关操作基本都是在 *image-dired* buffer 中进行的。

*image-dired* buffer中,你可以通过方向键选择各个缩略图,然后按下 RET (image-dired-display-thumbnail-original-image) 就能够在另一个 window 中显示出相应图片了,且若图片太大的话,还会自动缩减该图片大小以适应 window 的尺寸,若想要以原始尺寸来显示图片,则只需要 C-u RET 即可。

你还可以让 image-dired 调用外部图片浏览器来浏览该图片,方法是按下 C-RET (image-dired-thumbnail-display-external),Emacs 会使用 image-dired-external-viewer 中指定的浏览器来浏览图片。

为了方便浏览图片,你可以按下 SPC (image-dired-display-next-thumbnail-original) 来查看下一张缩略图对应的图片,还可以按下 DEL (image-dired-display-previous-thumbnail-original) 来显示上一张缩略图对应的图片。

除了浏览图片之外,image-dired 还提供了一些管理图片的功能,比较常用的功能有:

d (image-dired-flag-thumb-original-file)
在 dired 中标记对应的图片文件为待删除的文件.
C-d (image-dired-delete-char)
删除对应的缩略图(但不会删除原图片文件!)
tt (image-dired-tag-thumbnail)
为缩略图添加标签
tr ((image-dired-tag-thumbnail-remove))
为缩略图删除标签
c (image-dired-comment-thumbnail)
为缩略图添加(修改)说明
R (image-dired-rotate-original-right)
将图片向右旋转(修改原图片而不仅仅是显示),需要借助外部工具JpegTRAN
L (image-dired-rotate-original-left)
让图片向左旋转(修改元图片而不仅仅是显示).需要借助外部工具JpegTRAN

使用 Emacs 作为图片浏览器

通过上面的介绍可以看出,Emacs 基本上可以满足一般的图片浏览需求了,我们可以通过一小段脚本将 Emacs 包装成为一个简单的图片浏览器:

#!/bin/bash

if [ $# -eq 1 ];then
    file=$(pwd)
else
    file=$1
fi

if [ -d $file ];then
    emacs -q --eval "(image-dired \"${file}\")"
else
    emacs -q $file
fi

我把这段小脚本起名为 emage.shemacs-image 的意思

若你直接运行该脚本,则会用 image-dred 显示当前文件夹下的所有图片缩略图。

同时你也可以给这个脚本带上一个表示文件夹或者图片的参数,若参数为文件夹则会用 image-dired 浏览指定文件夹下的所有图片,若参数为文件,则会直接用 emacs 来浏览该图片。

这里需要说明一下的是,为什么我这里用 emacs -q 而不是用 emacsclient 呢?是因为两个原因:

  1. 当目录中的图片太多时,image-dired 消耗大量的时间来生成缩略图,而这期间会造成 Emacs 卡死,所以我这里用 emacs 新启动一个进程。
  2. 当开启了 evil 插件后,会发现有些 image-mode*image-dired* buffer 中的快捷键会被 evil 覆盖掉,不太好用. 所以我这里用 -q 选项来阻止 emacs 读取配置文件。
 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
28 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文