如何使用ChunkyPNG或RMagick保存8位PNG

ana*_*ami 4 ruby png rmagick png-8

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

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

即. img.write('PNG8:image.png')

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

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

我的问题:

  1. 是否有一种方法可以像安装ImageMagick Q16的机器上的ImageMagick Q8一样正确保存8位PNG?

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

提前致谢..

wva*_*gen 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)
Run Code Online (Sandbox Code Playgroud)

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