终端直接显示图片

8,574 阅读2分钟
原文链接: mp.weixin.qq.com

用过 Linux 的朋友们都知道,在命令行中有一个最基本的命令 "ls" ,能够列举当前目录下的所有文件名称和详细信息。不过如果想要在命令行中直接查看图片缩略图的话,就得打开文件夹才能看到了,很不方便。最近国外一个网名叫 hackerb9 的朋友就在 Github 上开源了自己编写的一个项目 "lsix",该项目能够在命令行中直接显示当前目录下的所有图片缩略图,是不是觉得很棒呢?

安装

目前 lsix 还只是一个简单的项目,其所有代码也都是放在 lsix 这个文件中,小伙伴们可以直接将这个文件下载下来,然后放在 /usr/bin/local 目录下即可运行。不过因为 lsix 依赖 ImageMagick 库来检测图片格式,所以先要确保系统中装有这个库,Ubuntu 系统上可以使用如下命令安装:

$ sudo apt install imagemagick

示例用法

显示当前目录下的所有图片:

$ lsix

使用 shell 通配符显示所有图片:

$ lsix *jpg

显示指定图片:

$ lsix abc.png

pdf 当前渲染速度比较慢,所以 lsix 并不会默认显示,但是可以强制显示 pdf 缩略图:

$ lsix abc.pdf

显示 GIF 动画,GIF 中所有的帧都会显示出来:

$ lsix nyancat.gif

背景颜色

无论 Terminal 的背景是什么颜色,所有含有透明颜色的如 PNG 和 SVG 格式的图片都能被正确的显示出来,这是因为 lsix 会使用 Terminal 转义符来计算显示图片所需的文本填充颜色和背景颜色。当然你也可以强制指定背景颜色:

$ xterm -bg blue

$ lsix

Terminal

作者是在 vt340 仿真 (即支持 Sixel) 模式下开发的这个项目,但是在 xterm 中默认是不会启用 Sixel 模式的,因此可能需要提前开启它:

$ xterm -ti vt340

或者将 vt340 设置为默认的终端类型,将下面两行代码添加进 '.Xresources' 文件中,然后运行 xrdb -merge .Xresources 命令即可:

! Allow sixel graphics. (Try: "convert -colors 16 foo.jpg sixel:-").

xterm*decTerminalID : vt340

总结

Sixel 是 "six pixel" 单词的缩写,即六像素的意思,Sixel 使用六个像素和一个宽位对图像进行编码,使其能够将一副图片转为 ASCII 字符序列,易于在终端中传输和查看。有这个命令的话,当我们远程 ssh 到某台服务器,想要查看机器上的图片的时候,就不用再一一下载下来了,直接 lsix 就能直接查看图片缩略图了,会给大家带来极大的方便。

-长按关注-