当给定一个具有透明背景的 png 时,即使没有任何可见的内容,它也会导致我的代码的其余部分出现问题,因此我正在寻找一种使用开源解决方案或默认的 libpng 来删除透明背景的方法库 - 最好在 Linux 中。
我尝试过使用 ImageMagick,这就是我验证将透明背景转换为任何颜色可以解决我的问题的方法。我只是在寻找与 ImageMagick 不同的解决方案。
您可以通过多种方式做到这一点。这是使用 NetPBM 套件并使用中心带有透明圆孔的红色图像的示例:
步骤如下:
ppmmake blue 200 100 > background.ppm
pngtopam -alphapam YOURIMAGE.png > foreground.pam
pamcomp foreground.pam background.ppm > result.ppm
pamtopng result.ppm > result.png
TL;博士
这有点啰嗦,所以利用 Unix 的力量将许多做得好的事情链接在一起,你会得到:
pamcomp <(pngtopam -alphapam YOURIMAGE.png) <(ppmmake blue 200 100) | pamtopng - > result.png