怎么在 Terminal 中查看图片
从 open、chafa 到 iTerm2 imgcat、Kitty icat:不同终端支持的图片显示方式不一样。
1. 先看结论
在 Terminal 里“显示图片”有两类方法:
- 真正显示位图:需要终端模拟器支持图片协议,例如 iTerm2、Kitty、WezTerm。清晰度高,适合在终端内直接预览图片。
- 字符/色块预览:例如
chafa,它把图片转换为字符或色块。兼容性更好,但清晰度受终端网格限制。
如果只是想从命令行打开图片,而不是嵌入终端窗口中显示,用 macOS 自带命令最简单:
open "分布图.png"
2. 常用命令
iTerm2 使用 imgcat
imgcat /path/to/image.png
# 当前目录里有脚本时
./imgcat "分布图.png"
如果没有 imgcat,可以安装 iTerm2 Shell Integration,或者下载脚本:
curl -L https://iterm2.com/utilities/imgcat -o /usr/local/bin/imgcat
chmod +x /usr/local/bin/imgcat
Kitty 使用 icat
kitty +kitten icat /path/to/image.png
WezTerm 使用 imgcat
wezterm imgcat /path/to/image.png
通用字符预览 使用 chafa
brew install chafa
chafa /path/to/image.png
3. 为什么 chafa 看起来分辨率很低
这通常不是图片坏了,也不是 chafa 出错,而是它的显示方式决定的。
- 终端按“字符单元格”显示,不是按真实像素显示;图片会被压缩成几十列、几十行字符。
- 字符格通常不是正方形,图片比例和细节会被近似。
- 如果终端只支持 256 色,颜色和层次会明显变差;truecolor 终端效果更好。
- 默认尺寸会受当前窗口大小影响,窗口小就更糊。
可以用这些参数改善效果:
chafa --size=120x60 image.png
chafa --symbols=block --size=120x60 image.png
chafa --colors=full --size=120x60 image.png
chafa --format=symbols --symbols=space --fill=block --colors=full image.png
最有效的做法是把终端窗口拉大、字体调小,并确认终端支持 truecolor。想看真正高分辨率图片时,优先用 imgcat、kitty +kitten icat 或 wezterm imgcat。
4. zsh: command not found: kitty
kitty 不是 macOS 系统自带命令,它是一个终端模拟器。出现这个报错,通常说明没有安装 Kitty,或者 Kitty 的命令没有进入 PATH。
macOS 可以这样安装:
brew install --cask kitty
安装后需要打开 Kitty 终端,再运行:
kitty +kitten icat image.png
如果不想换终端,就用当前终端支持的方案:iTerm2 用 imgcat,WezTerm 用 wezterm imgcat,普通 Terminal 可以用 open 或 chafa。
5. imgcat 没有任何反应
./imgcat "分布图.png" 没反应时,最常见原因不是图片文件有问题,而是当前终端不支持 iTerm2 的图片协议。
先检查当前终端:
echo $TERM_PROGRAM
如果输出不是 iTerm.app,例如是 Apple_Terminal、vscode 或 WarpTerminal,imgcat 可能不会显示图片。
再检查脚本和图片文件:
ls -l ./imgcat "分布图.png"
file "分布图.png"
# 如果 imgcat 没有执行权限
chmod +x ./imgcat
还可以确认脚本本身是否能输出帮助信息:
./imgcat --help
如果有 help 输出但图片不显示,基本可以判断是终端不支持图片协议。用 iTerm2 打开终端后进入图片目录,再执行 ./imgcat "分布图.png"。
6. 怎么选择方案
| 场景 | 推荐命令 | 说明 |
|---|---|---|
| 只想打开图片 | open image.png | 调用系统预览,不在终端内嵌显示。 |
| 普通 Terminal 看大概 | chafa --colors=full --size=160x80 image.png | 兼容性好,但清晰度有限。 |
| iTerm2 内嵌显示 | imgcat image.png | 需要在 iTerm2 里执行。 |
| Kitty 内嵌显示 | kitty +kitten icat image.png | 需要安装并使用 Kitty。 |
| WezTerm 内嵌显示 | wezterm imgcat image.png | 需要安装 WezTerm。 |