我有一个彩色图像,其中有很多现有的透明背景,但也有一些rgb(255,0,255)
我想另外变得透明的亮粉色块。
我这样做是这样的:
convert 0001.png -fuzz 15% -fill transparent -transparent "rgb(255,0,255)" result.png
问题是,因为原始图像是抗锯齿的,所以仍然有一个亮粉色光晕,它与例如rgba(255,0,255, 50 )
和其他部分透明的值不匹配,除非我把速度调得-fuzz
太高。
所以我想我会这样解决这个问题:
convert 0001.png -fuzz 15% -fill transparent
-transparent "rgba(255,0,255,0)"
-transparent "rgba(255,0,255,64)"
-transparent "rgba(255,0,255,128)"
-transparent "rgba(255,0,255,192)"
-transparent "rgba(255,0,255,255)"
result.png
...但是对不同程度的不透明度的额外调用-transparent
似乎没有任何额外的效果。
几乎就像在进行匹配之前调用 -transparent 截断我的rgba(255,0,255,128)
to (尽管仍然查看不透明度,但似乎总是从 255 开始这样做,而不是从我传入的不透明度开始)。rgb(255,0,255)
-fuzz
-transparent
如何替换 color 的所有示例RGB(255,0,255)
,而不考虑像素预先存在的 alpha?
这是我正在使用的图像:
中的
rgba(R,G,B,A)
是A
from (0
完全透明) to1
(完全不透明),而不是 from0
to255
。您的尝试可以这样修复:这是结果:
我不知道这是否是最好的解决方案。至少它表明你的多重想法
-transparent
还不错,你只是弄错了不透明度的范围。上面的结果并不完美,有一些粉红色的残留物,其中粉红色与其他(不透明)颜色混合。它
-fuzz 35%
在这方面看起来更好:但边缘失去了柔软度。