Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Imagemagick Imagick ALPHA与不透明度_Imagemagick_Opacity_Alpha_Imagick - Fatal编程技术网

Imagemagick Imagick ALPHA与不透明度

Imagemagick Imagick ALPHA与不透明度,imagemagick,opacity,alpha,imagick,Imagemagick,Opacity,Alpha,Imagick,在开发过程中,我偶然发现了Imagick的一个怪癖。我用一个黑色透明像素图像确认了这个问题。在Gimp下,黑色显示为75%不透明,因此我猜其alpha/透明度为25% 当我运行getColorValue(\Imagick::COLOR\u OPACITY)时,我得到大约0.25,而getColorValue(\Imagick::COLOR\u ALPHA)得到大约0.75,因此与我的预期正好相反 这是关于Imagick的问题(我使用的是php Imagick 3.4.3-1和ImageMagic

在开发过程中,我偶然发现了Imagick的一个怪癖。我用一个黑色透明像素图像确认了这个问题。在Gimp下,黑色显示为75%不透明,因此我猜其alpha/透明度为25%

当我运行
getColorValue(\Imagick::COLOR\u OPACITY)
时,我得到大约0.25,而
getColorValue(\Imagick::COLOR\u ALPHA)
得到大约0.75,因此与我的预期正好相反


这是关于Imagick的问题(我使用的是php Imagick 3.4.3-1和ImageMagick 6.9.7-9)还是我颠倒了不透明度和透明度的概念?

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

这是关于Imagick[…]的问题还是我颠倒了不透明和透明的概念

让我们来看看这两个是如何实现的

PixelGetOpacityQuantum

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

return(ClampToQuantum(wand->pixel.opacity));
return(QuantumRange-ClampToQuantum(wand->pixel.opacity));
如您所见,两者都返回绑定在0和Quantum limit之间的相同数据


PixelGetOpacityQuantum
返回准确的数据值,但是
PixelGetAlphaQuantum
调整/反转为我们在流行的颜色格式/规格中所期望的值。这都是上下文

我知道不透明度和透明度是从一个唯一的值推断出来的,但似乎Imagick返回的是不透明度而不是透明度,反之亦然,这就是我的问题。事实上,ImageMagick版本7.x.x在这方面与ImageMagick 6.x.x不同。“我们现在支持alpha,以前是不透明的”据我估计这可以回答我的问题,但我真的不明白这句话的意思。正确@GlennRanders Pehrson!IM7关注像素特性,alpha和不透明性相互隔离。