在开发color-extractor时,我偶然发现了与Imagick的怪癖。我用一个黑色透明像素图像确认了这个问题。在Gimp下,这个黑色显示为75%不透明,所以我猜它的alpha /透明度是25%。
当我跑$ sed --version
sed (GNU sed) 4.2.2
时,我得到大约0.25,而getColorValue(\Imagick::COLOR_OPACITY)
得到大约0.75,所以与我的期望完全相反。
这是关于Imagick的问题(我使用的是php-imagick 3.4.3-1和ImageMagick 6.9.7-9)还是我反映了不透明度和透明度的概念?
答案 0 :(得分:0)
不是怪癖,而是设计。在大多数情况下,不透明度和alpha共享相同的数据通道,图像格式/编码器的上下文实现正确的值。我强调 context 是关键。
这是关于Imagick [..]的问题还是我反映了不透明度和透明度的概念?
让我们来看看两者是如何实现的。
<强> PixelGetOpacityQuantum 强>
return(ClampToQuantum(wand->pixel.opacity));
<强> PixelGetAlphaQuantum 强>
return(QuantumRange-ClampToQuantum(wand->pixel.opacity));
如您所见,两者都返回0和 Quantum 限制之间的相同数据。
PixelGetOpacityQuantum
会返回确切的数据值,但PixelGetAlphaQuantum
会调整/反转我们在常用颜色格式/规格中所期望的值。这完全是背景!