我有PNG图像(PNG 96x96 96x96 + 0 + 0 8位RGB 2.05KB 0.000u 0:00.000)。它是一个图标,具有完全透明的背景和白色符号(其边框是从透明到全白的渐变)。我想将整个图标的不透明度降低到其初始值的30%。使用convert
,我可以这样做:
convert input.png -channel a -evaluate Multiply 0.3 +channel output.png
identify
为结果图像提供相同的输出。但是,我想从Ruby脚本中执行此操作,因此我使用RMagick。
这是一个小小的考验:
source = Magick::Image::read(INPUT)[0]
source.write(OUTPUT)
这有效:我有完全相同的图像。与identify
的输出相同。现在,让我们改变不透明度:
source = Magick::Image::read(INPUT)[0]
source.opacity = (Magick::QuantumRange * 0.3).floor
source.write(OUTPUT)
结果错误:在不透明度降低之前添加黑色背景。我最终得到了30%不透明度的黑色背景和30%不透明度的白色图标(对于图标,我想要的是)。这里是identify
输出:PNG 96x96 96x96 + 0 + 0 8位RGB 1.06KB 0.000u 0:00.000
我尝试在输出文件名前添加PNG32:
。如果identify
输出更改(PNG 96x96 96x96 + 0 + 0 8位sRGB 1.29KB 0.000u 0:00.000),则视觉结果保持不变。
我尝试指定背景颜色:
source = Magick::Image::read(INPUT)[0]
source.opacity = (Magick::QuantumRange * 0.3).floor
source.write(OUTPUT) do
self.background_color = 'none'
end
但我最终得到了完全相同的结果。
我怎么能避免这种黑色背景?
答案 0 :(得分:2)