Ruby 如何使用ChunkyPNG或RMagick保存8位PNG
我一直在尝试使用RMagick()和ChunkyPNG()保存8位png(PNG8),但一直无法做到这一点 然而,我唯一能让它在RMagick上工作的时间是如果ImageMagick安装是基于QuantumDepth 8而不是通常的16。无法动态更改此设置-必须使用此设置编译ImageMagick的安装。 创建图像时将深度设置为8或保存时为格式类型添加前缀也没有效果 例如,Ruby 如何使用ChunkyPNG或RMagick保存8位PNG,ruby,png,rmagick,png-8,Ruby,Png,Rmagick,Png 8,我一直在尝试使用RMagick()和ChunkyPNG()保存8位png(PNG8),但一直无法做到这一点 然而,我唯一能让它在RMagick上工作的时间是如果ImageMagick安装是基于QuantumDepth 8而不是通常的16。无法动态更改此设置-必须使用此设置编译ImageMagick的安装。 创建图像时将深度设置为8或保存时为格式类型添加前缀也没有效果 例如,img.write('PNG8:image.png') 无论如何,我已经看过ChunkyPNG,我真的更喜欢使用它而不是RM
img.write('PNG8:image.png')
无论如何,我已经看过ChunkyPNG,我真的更喜欢使用它而不是RMagick——因为它是纯Ruby,不依赖ImageMagick。我也不能用它来保存PNG8
我必须使用图形程序将PNG转换为8比特-
我的问题是:
提前感谢..您所说的PNG8到底是什么意思?8位灰度、8位索引颜色、3x8位RGB或4x8位RGBA?ChunkyPNG支持所有这些颜色模式 默认情况下,ChunkyPNG尝试确定保存图像的最佳颜色模式。您可以通过向保存方法提供选项哈希来覆盖它:
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)
更多信息:请原谅我说得不清楚。我想根据你的描述,它应该是8位索引颜色。我正在用代码创建一个新图像,并以尽可能最小的PNG格式保存它。'img.save(“public/image.PNG”,:color_mode=>ChunkyPNG::color_index,:bit_depth=>8”)给了我一个例外:“ChunkyPNG::ExpectationFailed at/这个调色板有太多颜色!*文件:png_encoding.rb*位置:encode_png_pixelstream*行:157'可以通过GIMP将图像转换为索引png,并可用于我的目的。8位索引颜色模式最多支持256种颜色(2^8)。您需要减少图像中的颜色数量,以使PNG8正常工作。如果你使用256色或更少的颜色,ChunkyPNG将自动选择索引颜色模式。在你回复之前-我意识到我在做什么,这是错误的。你是对的-调色板太大了。这是一个很难找到答案的方法。谢谢你的帮助和耐心。看来ChunkyPNG赢了RMagick!