在 Linux 上找出 PNG 透明背景颜色

在 Linux 上找出 PNG 透明背景颜色

PNG 文件似乎包含透明像素的背景颜色信息。当以错误的设置将该图像用作纹理时,这种情况有时会变得明显。

如何在 Linux(最好是命令行)中找出 PNG 文件中透明像素的颜色?

答案1

背景颜色通过 PNG“bKGD”块传达。

在命令行中,您可以使用“pngcheck -v”。从以下网址下载并安装 pngcheck

http://www.libpng.org/pub/png/apps/pngcheck.html

然后输入

pngcheck -v file.png

如果 PNG 文件中存在 bKGD 块,pngcheck 的输出将包含如下内容:

块 bKGD 位于偏移量 0x000a0,长度 6 红色 = 0x00e0,绿色 = 0x00e0,蓝色 = 0x0080

您可能已经拥有 ImageMagick(版本 6.6.9 或更高版本),因此您还可以通过输入以下命令来获取 bKGD 块信息以及许多其他内容

identify -verbose file.png

并寻找

背景颜色:srgba(224,224,128,1)

png:bKGD: 发现了块(参见上面的背景颜色)

如果只出现“背景颜色”而没有出现“png:bKGD:...”,则识别报告的是 ImageMagick 的默认背景颜色,并且 PNG 文件中不存在 bKGD 块。

答案2

PNG 规范(关联) 描述了存储透明度信息的 tRNS 块。

软件库可以读写 PNG 文件,包括透明度信息。具体来说,查找以下函数:

png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color)

相关内容