📜  PHP | imagick thresholdImage()函数(1)

📅  最后修改于: 2023-12-03 15:33:33.396000             🧑  作者: Mango

PHP | imagick thresholdImage()函数

介绍

thresholdImage()函数是imagick扩展中的一个重要函数,在图像处理中被广泛使用。它的作用是将图像做二值化处理,将图像的像素点根据设定的阈值分成两类,一类是高于设定阈值的像素点,另一类是低于或等于设定阈值的像素点。这个函数可以将彩色图片或黑白图片均匀地分成两类,并将黑白图片转换为二值图片。

语法
public bool Imagick::thresholdImage(float $threshold, [, int $channel = Imagick::CHANNEL_ALL ])
参数
  • $threshold:设定的阈值,可以是0~1之间的浮点数,也可以是8位整数。如果为0~1之间的浮点数,则会根据 QuantumRange 进行缩放处理,即将该浮点数乘以 QuantumRange 后转换为整数作为阈值。如果为8位整数,则直接作为阈值。
  • $channel:可选参数,指定要处理的通道,可选值为 imagick::CHANNEL_ALL, imagick::CHANNEL_RED, imagick::CHANNEL_GRAY, imagick::CHANNEL_GREEN, imagick::CHANNEL_BLUE, imagick::CHANNEL_ALPHA, imagick::CHANNEL_MAGENTA, imagick::CHANNEL_YELLOW, imagick::CHANNEL_BLACK, imagick::CHANNEL_OPACITY, imagick::CHANNEL_CYAN, imagick::CHANNEL_INDEX, imagick::CHANNEL_LUMINANCE, imagick::CHANNEL_SATURATION。
返回值

返回值为bool类型,即函数执行成功返回true,否则返回false。

示例
<?php
// 实例化一个imagick对象
$image = new Imagick('example.jpg');

// 将图片做灰度处理
$image->modulateImage(100, 0, 100);

// 将图片做二值化处理,设定阈值为0.5
$image->thresholdImage(0.5);

// 显示处理后的图片
header('Content-Type: image/jpeg');
echo $image;   
?>

以上示例中,我们可以看到先利用 modulateImage()函数将原图片做灰度处理,然后再利用 thresholdImage()函数对灰度化后的图片做二值化处理,设定阈值为0.5,最后再将处理后的图片输出。输出的图片已经变成了二值图片,即只有黑色和白色。

注意事项
  1. $threshold参数支持的数据类型为float或int类型,其他类型会抛出imagick异常。
  2. 如果设置了$channel参数,则只会处理指定的通道,处理完成后其他通道的值不变。
  3. thresholdImage()函数不支持返回图像数据,只能直接输出或保存处理后的图片。