有些软件在导出图片时(比如JPEG或者PNG格式)并没有去除白边,可以用图片处理软件点开处理,但是如果图片比较多时,那就有点繁琐了。自然,还是要祭上命令行。

网上简单搜索了下,ImageMagick 就可以满足要求。ImageMagick 有个 convert -trim 命令,如果不再设置其他选项的话,就自动去除最大范围的白边,例如:

convert -trim figin.png figout.png

则会将图片 figin.png 的白边去掉,并存为 figout.png

明确下问题:当前目录下有很多图片,希望一次性将它们的白边都去掉。为了不跟当前的图片混淆,可以新建一个目录 figout,用于存放去除白边后的图片。此外,为了区分,所有去除白边后的图片的名字为原名后加上 out

整体代码片段如下:

#!/bin/bash
mkdir "figout"
for fig in *.png
do 
    figname="${fig%.*}"
    echo $figname
    figout="figout/${figname}-out.png"
    echo $figout
    convert -trim $fig $figout
done

其中,获取文件名和后缀的方法参加如下例子

~% FILE="example.tar.gz"

~% echo "${FILE%%.*}"
example

~% echo "${FILE%.*}"
example.tar

~% echo "${FILE#*.}"
tar.gz

~% echo "${FILE##*.}"
gz

此外,如果是要去除 pdf 文档白边的话,TeX 有个 pdfcrop 工具,相当顺手。

参考