我有一个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)
这是有效的:我有完全相同的图像。仍然具有相同的输出
识别
。现在,让我们更改不透明度:
source = Magick::Image::read(INPUT)[0]
source.opacity = (Magick::QuantumRange * 0.3).floor
source.write(OUTPUT)
结果是错误的:在不透明度降低之前添加了黑色背景。我最终得到了一个30%不透明度的黑色背景和一个30%不透明的白色图标(这是我想要的图标)。这是
识别
输出:PNG 96x96 96x96+0+0 8位RGB 1.06KB 0.000u 0:00.000
我试图添加
PNG32:
在输出文件名前面。如果
识别
输出更改(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
但我最终得到了完全相同的结果。
你知道我如何避免这种黑色背景吗?