Imagick ALPHA vs OPACITY

时间:2017-02-24 11:53:17

标签: imagemagick opacity alpha imagick

在开发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)还是我反映了不透明度和透明度的概念?

1 个答案:

答案 0 :(得分:0)

不是怪癖,而是设计。在大多数情况下,不透明度和alpha共享相同的数据通道,图像格式/编码器的上下文实现正确的值。我强调 context 是关键。

  

这是关于Imagick [..]的问题还是我反映了不透明度和透明度的概念?

让我们来看看两者是如何实现的。

<强> PixelGetOpacityQuantum

return(ClampToQuantum(wand->pixel.opacity));

<强> PixelGetAlphaQuantum

return(QuantumRange-ClampToQuantum(wand->pixel.opacity));

如您所见,两者都返回0和 Quantum 限制之间的相同数据。

PixelGetOpacityQuantum会返回确切的数据值,但PixelGetAlphaQuantum会调整/反转我们在常用颜色格式/规格中所期望的值。这完全是背景!