如果你喜欢使用终端应用,那肯定有在终端界面显示图片的需求。有时候你可能需要显示一个本地磁盘的图片,或者你在使用w3m的时候可能需要显示一个网页的图片。下面我们就根据这两点,如何在osx上显示图片。终端显示本地磁盘图片viu命令行客户端viu是一个非常好用的终端图片显示工具,兼容各种终端协议,如iterm2、kitty,可以在这些终端下显示全彩图片。对于tmux,只能支持基于ASCII的半块图片(基于字符的效果不是很好)。osx下安装:brewinstallviu可能安装时间比较长,因为viu工具是基于rust语言开发的,还需要安装rust相关的依赖库。安装完成后,可以使用如下命令显示图片。#显示单张图片viuxxx.pngHe#显示设置宽度的图片viu-w80xxx.png需要注意的是,viu直接在iterm2和kitty的命令行终端下,显示效果更好,因为使用了终端的图像协议,但是在tmux下会回退到halfblock。如果使用kitty,kitty终端下的icat,可以直接使用终端本身的image命令行icat(不支持iterm或tmux)。由于icat依赖imagemagick库,安装时间会比较长。安装命令如下:brewinstallimagemagick安装完成后,可以使用kitty+kittenicat命令显示图片。由于该命令比较长,可以在自己的shell环境下别名使用。#如果路径环境变量中没有添加kitty命令,则需要使用实际kitty命令的路径aliasicat="/Applications/kitty.app/Contents/MacOS/kitty+kittenicat"W3M终端浏览器显示图片w3m是传统的基于终端的文本浏览器,可用于终端下的简单网页浏览。如果在osx下使用brew安装的w3m版本默认是不支持图片浏览的,而且安装的版本也很老。所以我们需要根据最新的源码进行编译。基于源码编译,我也喜欢用brew来管理。下面介绍如何使用brew编译w3m源码。进入本地brew-core缓存目录。cd$(brew--repositoryhomebrew/homebrew-core)复制w3m.rb文件到个人下载目录.cpFormula/w3m.rb~/Downloads/修改w3m.rb文件,修改编译基于最新源代码,并启用图像编译选项。最终修改如下:classW3m:builddepends_on"bdw-gc"depends_on"openssl@1.1"depends_on"imlib2"uses_from_macos"ncurses"uses_from_macos"zlib"on_linuxdodepends_on"gettext"depends_on"libbsd"enddefinstall#解决Xcode12的配置问题ENV.append"CFLAGS","-Wno-implicit-function-declaration"system"./configure","--prefix=#{prefix}","--with-termlib=ncurses","--enable-image","--with-imagelib=imlib2","--with-ssl=#{Formula["openssl@1.1"].opt_prefix}"系统"制作”,”install"endtestdoassert_match"DuckDuckGo",shell_output("#{bin}/w3m-dumphttps://duckduckgo.com")endend注意:url的路径改为从github下载的最新zip包,并且重新打包后是一个tar.gz文件,下载地址:https://github.com/tats/w3m/archive/refs/heads/master.zipsha256需要改成tar.gz对应的文件摘要,可以使用shasum-a256comment.Comments去掉patch相关的配置,添加--enable-image和--with-imagelib=imlib2,后面的库在mac下好像不需要,使用brew安装相关依赖brewdepsw3m。rb|xargsbrewinstallusingbrewcommand源码生成全新安装(如果之前没有安装过,用install代替reinstall)brewreinstall-s-v-dw3m.rb在终端使用w3m显示图片。可以选择basedonkitty,iterm,sixelprotocols#basedonsixel(只支持iterm2终端)w3m-oinline_img_protocol=2www.baidu.com#basedoniterm2terminalw3m-oinline_img_protocol=3www.baidu.com#基于kitty终端w3m-oinline_img_protocol=4www.baidu.com