4

我一直在尝试使用 RMagick ( http://rmagick.rubyforge.org/ ) 和 ChunkyPNG ( https://github.com/wvanbergen/chunky_png )保存 8 位 PNG (PNG8 ) 但一直无法这样做.

然而,我唯一能让它在 RMagick 上工作的情况是 ImageMagick 安装基于 8 的 QuantumDepth 而不是通常的 16。不可能即时更改此设置 - 必须编译 ImageMagick 的安装有了这个设置。在创建图像时将深度设置为 8 或在保存时为格式类型添加前缀也无效。

IE。img.write('PNG8:image.png')

无论如何,我已经看过 ChunkyPNG,我真的更喜欢使用它而不是 RMagick - 仅仅是因为它是纯 Ruby 并且不依赖于 ImageMagick。我也无法使用它保存 PNG8。

之后我必须使用图形程序将 PNG 转换为 8 位 -

我的问题:

  1. 有没有办法像在安装了 ImageMagick Q16 的机器上的 ImageMagick Q8 上一样正确保存 8 位 PNG?

  2. 任何人都可以提供在 ChunkyPNG 中做我自己的 4 位编码器的指针,或者知道用它保存 PNG8 的方法吗?

提前致谢..

4

1 回答 1

5

PNG8到底是什么意思?8 位灰度、8 位索引颜色、3x8 位 RGB 还是 4x8 位 RGBA?ChunkyPNG 支持所有这些颜色模式。

默认情况下,ChunkyPNG 会尝试确定保存图像的最佳颜色模式。您可以通过向 save 方法提供选项哈希来覆盖它:

image.save('filename.png', color_mode: ChunkyPNG::COLOR_TRUECOLOR)
# Or: ChunkyPNG::COLOR_TRUECOLOR_ALPHA    

image.to_blob(color_mode: ChunkyPNG::COLOR_INDEXED, bit_depth: 8)

更多信息:https ://github.com/wvanbergen/chunky_png/wiki

于 2011-06-28T10:19:53.813 回答