寻找一种在 Linux 中无需使用 ImageMagick 即可将 PNG 的透明背景替换为任何其他颜色的方法

问题描述 投票:0回答:1

当给定一个具有透明背景的 png 时,即使没有任何可见的内容,它也会导致我的代码的其余部分出现问题,因此我正在寻找一种使用开源解决方案或默认的 libpng 来删除透明背景的方法库 - 最好在 Linux 中。

我尝试过使用 ImageMagick,这就是我验证将透明背景转换为任何颜色可以解决我的问题的方法。我只是在寻找与 ImageMagick 不同的解决方案。

linux imagemagick png libpng
1个回答
0
投票

您可以通过多种方式做到这一点。这是使用 NetPBM 套件并使用中心带有透明圆孔的红色图像的示例:

enter image description here


步骤如下:

  • 制作一个蓝色背景图像来合成
  • 将 PNG 转换为 PAM
  • 将图像合成到背景上
  • 将生成的 PPM 转换回 PNG

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.