在终端直接查看图片的方法

描述了我修改的一个小脚本,可以在特定的终端支持直接打印出图片的内容,而不需要新的外部窗口。

这篇文章介绍一个在终端直接查看图片内容的脚本,依赖w3m,在终端模拟器满足色彩要求时,将图片打印到屏幕上

依赖

  • w3m
  • bash

脚本

这个脚本参考了z3bra的博客

使用w3m自带的图片查看工具,在当前终端打印图片。为了不影响后续的命令输入,默认清屏。

它会根据终端的大小调整图片大小,尽量填满终端,并在下部显示新的PS1。对终端的色彩要求没有测试

下面是脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
#
# z3bra -- 2014-01-21
# linusboyle modify this a little bit
#show img in terminal using w3mimgdisplay

test -z "$1" && exit

clear

W3MIMGDISPLAY="/usr/lib/w3m/w3mimgdisplay"
FILENAME=$1
FONTH=21 # 如果没有占满终端或过大,修改此值
FONTW=11  # 此值也是一样 这两个值是终端每行每列的大小,经过计算并不是像素的个数
COLUMNS=`tput cols`
LINES=`tput lines`

read width height <<< `echo -e "5;$FILENAME" | $W3MIMGDISPLAY`

max_width=$(($FONTW * $COLUMNS))
max_height=$(($FONTH * $LINES))

if test $width -gt $max_width ; then
    height=$(($height * $max_width / $width))
    width=$max_width
fi

if test $height -gt $max_height ; then
    width=$(($width * $max_height / $height))
    height=$max_height
fi

w3m_command="0;1;0;0;$width;$height;;;;;$FILENAME\n4;\n3;"

tput cup $(($height/$FONTH)) 0
echo -e $w3m_command|$W3MIMGDISPLAY

截图:

pic

发表于 2018-06-28
JS
Arrow Up