函数名: Imagick::orderedPosterizeImage()
适用版本: Imagick 3.4.0
用法:该函数通过有序抖动算法对图像进行分级处理。它将图像的颜色减少到指定的级别,并通过有序抖动算法来减小颜色平滑度,从而产生一种类似于卡通效果的图像。
语法:
public Imagick::orderedPosterizeImage(int $threshold_map, string $channel = Imagick::CHANNEL_ALL)
参数:
- $threshold_map: 指定用于抖动算法的阈值映射。它是一个包含256个整数的数组,用于指定每个颜色级别的阈值。较大的值将产生较少的颜色级别,较小的值将产生更多的颜色级别。
- $channel(可选): 指定要应用该函数的通道。默认为 Imagick::CHANNEL_ALL,表示所有通道。
返回值:成功时返回 true。
示例:
// 创建一个 Imagick 对象并加载图像
$image = new Imagick('input.jpg');
// 定义阈值映射数组
$threshold_map = [
0, 16, 32, 48, 64, 80, 96, 112,
128, 144, 160, 176, 192, 208, 224, 240,
256, 272, 288, 304, 320, 336, 352, 368,
384, 400, 416, 432, 448, 464, 480, 496,
512, 528, 544, 560, 576, 592, 608, 624,
640, 656, 672, 688, 704, 720, 736, 752,
768, 784, 800, 816, 832, 848, 864, 880,
896, 912, 928, 944, 960, 976, 992, 1008,
// 其他阈值...
];
// 应用有序抖动算法进行分级处理
$image->orderedPosterizeImage($threshold_map);
// 显示处理后的图像
header("Content-Type: image/jpg");
echo $image;
在上面的示例中,我们首先创建了一个 Imagick 对象并加载了一个名为 "input.jpg" 的图像。然后,我们定义了一个阈值映射数组,其中包含了256个整数,用于指定每个颜色级别的阈值。最后,我们调用了 orderedPosterizeImage() 函数,并将阈值映射数组作为参数传递进去,实现了有序抖动算法的分级处理。处理后的图像将通过 echo $image
显示出来。