索引PNG图像中的Alpha透明度

18
这里有一张图片:Gradient1
这张图片是一个简单的黑色到透明的渐变,保存在完整的 RGBA PNG 格式中。
这是同样的图片,通过 GIMP(Photoshop 产生相同的结果)转换为索引-alpha PNG:
Gradient2
如您所见,渐变现在是半透明的。
这是同样的图片,但这次是由我编写的 PHP 脚本将其转换为索引-alpha PNG:
Gradient3 所以我的问题是:为什么GIMP和Photoshop无法支持索引图像的局部透明度,当PHP脚本清楚地显示这样的图像可以被创建而没有问题吗?调色板包含alpha信息的图像有什么“问题”吗?更多关于编程的问题:最后一个图像中的透明度在Internet Explorer 6中是否有效?

optipng -force 可以正确地将其保存为索引-Alpha。 - Mechanical snail
@Mechanicalsnail,我无法在我的图像上使用optipng 0.7.7进行复制,即使在最大优化级别下也是如此。手册中,在“Bugs”部分提到,颜色调色板缩减和位深度缩减仅部分受支持。也许只有当你的颜色是纯黑色时才有效? - Maëlan
5个回答

6

我终于找到了真正的答案:有一个元数据条目允许您定义颜色表中每个颜色的alpha值。大多数图形程序不使用此功能,但它确实存在,并且可以使用,特别是由GD。


你是手动完成的还是使用插件,因为我无法想象手动处理现有图像。 - e-motiv
我在我的可编程图像需求中使用GD ;) - Niet the Dark Absol
1
GD?我需要被提醒还是只是被告知?(不是指图形设计,对吗?) - e-motiv
1
准确来说:这是一个辅助块,解码器可以忽略它:W3 PNG规范 - marcolz

5

就记录而言,PNG并不真正支持带有alpha通道的索引图像。实际发生的是,PNG允许您在颜色表(即索引)中添加带有alpha值的其他颜色...而不是完整的alpha通道。顺便说一句...


“tRNS”数据块代表每个“PLTE”中的条目的Alpha通道,使您可以使用索引颜色,但仍具有8位透明度。 - Jon Wolski

5

pngquant 是一款命令行应用程序,除了烟花之外,它还提供另一种选择。该程序将rgba png转换为带透明度的索引化png。

我找到了this post,其中更详细地介绍了如何使用它。

在Windows中,IE6及早期版本不支持具有可变透明度的PNGs,除非使用令人讨厌的解决方法。索引PNG只会显示完全不透明的部分,这通常效果很好。阴影会消失,但徽标或图标的不透明部分仍将显示。

这个页面有更好的解释和说明,以及更多的png压缩和量化工具:http://calendar.perfplanet.com/2010/png-that-works/


1

是的,我知道你的意思。Fireworks是我所知道的唯一一个可以创建和编辑PNG8+Alpha而不会出现问题的图像编辑程序。我希望更多的绘画程序能够支持这种格式,因为Fireworks很昂贵!


2
ImageAlpha 免费提供此功能,而且在我看来比 Fireworks 更好。 - Kornel
还有Color quantizer (Windows)Pngnq (Windows and Mac)。后者的开发者想要制作一个GIMP插件,但是他说GIMP没有提供调色板。也许有比我更多时间的人可以说服他或者使用这个或其他东西?哈哈.. - e-motiv

0

我在GIMP中找到了一种创建或转换具有减少的颜色调色板和alpha通道的图像的方法。

诀窍是向图层添加蒙版。

完整的复制步骤如下:

  1. 将您的图像放在一个图层中
  2. 向该图层添加蒙版。选择传输图层的alpha通道。
  3. 转换为索引(图像->模式->索引...)
  4. 保存为PNG

现在,您的图像具有减少的颜色和尺寸,但保持平滑的透明度。


2
在Linux上使用Gimp 2.10.20测试过:步骤1至3确实会生成带有索引颜色和alpha通道的Gimp图像(*.xcf文件),但第4步导出为带有全透明或全不透明的索引PNG。 - Maëlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接