getImageChannelRange 返回一个包含两个值的数组,分别映射到键 'minima' 和 'maxima',它们只是此函数执行的图像中该特定通道的最小值和最大值。对于照片和高质量图像,这意味着您几乎总是保证最小值为 0,最大值为允许的最大位值。对于大多数图像,这是 65,535,即 2^16 的值(如果从 0 开始计数),这意味着每个通道 16 位图像。这适用于所有通道。
但是,如果图像很简单,您可以获得更多样化的范围。一个简单的红色正方形图像,红色通道的最大值和最小值都为 65,535(最大),而所有其他通道的最大值和最小值都为 0(最小)。如果您想知道任何通道可能获得的最大值,请为此函数提供默认通道。
对于普通通道,您将看到类似于“imagick::CHANNEL_RED”的内容,但您可能有像“imagick::CHANNEL_OPACITY”这样的不寻常通道。对于颜色,您有以下“_VALUE”选项:red、gray、cyan、green、magenta、blue、yellow、all 和 default。对于不寻常的通道,您有以下“_VALUE”选项:undefined、alpha、opacity、matte、black 和 index。使用此函数,不寻常的通道总是产生 1.0E+37(10^37)的最小值和 -1.0E-37(-10^-37)的最大值,这是没有意义的,因此请坚持使用我上面提到的颜色值。
此函数对您不起作用?没问题。函数 getImageChannelExtrema 执行完全相同的事情。唯一的区别是不寻常通道上的错误:它们的最小值和最大值不会默认为疯狂的值,而是简单地默认为 0。
一般来说,此函数似乎具有告诉您图像可能有多简单的效用——如果通道最大值和最小值之间的差异非常小,这意味着该给定通道的颜色表达不多。这可能能够告诉您图像是在某个简单的绘图程序中绘制的,还是实际的照片,但除此之外,您必须进行大量的编程才能使其计算出更复杂的内容。
现在,一些仅红色图像的结果示例
ImageMagick - 通道范围
通道 - 'Undefined':最小值:1.0E+37 最大值:-1.0E-37
通道 - 'Red':最小值:65535 最大值:65535
通道 - 'Gray':最小值:65535 最大值:65535
通道 - 'Cyan':最小值:65535 最大值:65535
通道 - 'Green':最小值:0 最大值:0
通道 - 'Magenta':最小值:0 最大值:0
通道 - 'Blue':最小值:0 最大值:0
通道 - 'Yellow':最小值:0 最大值:0
通道 - 'Alpha':最小值:1.0E+37 最大值:-1.0E-37
通道 - 'Opacity':最小值:1.0E+37 最大值:-1.0E-37
通道 - 'Matte':最小值:1.0E+37 最大值:-1.0E-37
通道 - 'Black':最小值:1.0E+37 最大值:-1.0E-37
通道 - 'Index':最小值:1.0E+37 最大值:-1.0E-37
通道 - 'All':最小值:0 最大值:65535
通道 - 'Default':最小值:0 最大值:65535