我需要从渲染管道不生成(可靠)边界框的图表中裁剪空白(边距等)。边缘是可靠的白色,因此自动检测原则上是微不足道的,但是我设法找到的唯一现有工具是1990 年代初期的古老 pnmcrop ( http://netpbm.sourceforge.net/doc/pnmcrop.html ),它使用晦涩难懂的 netpbm 图像格式(https://en.wikipedia.org/wiki/Netpbm_format)。
netpbm 工具确实包含 PNG 格式转换器,所以这个三元组可以工作:
pngtopnm original.png >original.ppm
pnmcrop original.ppm >cropped.ppm
pnmtopng cropped.ppm >cropped.png
但它有点笨拙(并且使用图表,中间 PPM 文件可以膨胀超过 100 倍:original.png 是 165kB,original.ppm 是 224MB)。
肯定有一种方法可以哄骗像 imagemagick 这样的现代工具来查找和裁剪边框?
编辑:netpbm 工具支持标准输入。因此,作为没有临时文件的更好的单线:
pngtopnm <original.png | pnmcrop | pnmtopng >cropped.png
使用适当的工具替换(jpgtopnm、giftopnm 等 - 从所有 71 种可能性中选择!)它仍然有点笨拙。