我相信有很多像我一样的人一直在想,“你如何才能生成此操作的可读输出?”
<?php
$image = new Imagick('testimage.jpg');
$x = 1;
$y = 1;
$pixel = $image->getImagePixelColor($x, $y);
?>
如果你尝试打印 $pixel 对象的输出,你将一无所获。你必须使用 ImagickPixel 操作之一才能获得返回值。
你可以执行以下任一操作
<?php
$colors = $pixel->getColor();
print_r($colors); $pixel->getColorAsString(); ?>
我一直卡住的地方是如何将 Imagick::getImagePixelColor 操作中捕获的数据放入 ImagickPixel 对象中。我试图找到将值传递给新实例化的 ImagickPixel 对象的方法。好吧,看来一旦你使用 Imagick::getImagePixelColor 捕获了你的颜色数据,返回的就是一个 ImagickPixel 对象!
此外,如果你只想获取图像上某一点的颜色样本以插入另一个操作,则不需要将其转换为人类可读的格式。
例如,如果你想对某种颜色执行泛洪填充效果,你可以直接插入 ImagickPixel 对象的实例。
下面的填充将使用绿色作为填充颜色,并在你的图像的 1,1 坐标处执行泛洪填充效果,并将 1,1 处采样的颜色作为要填充的目标颜色。
<?php
$hexcolor = '#00ff00';
$fuzz = '4000';
$x = 1;
$y = 1;
$pixel = $image->getImagePixelColor($x, $y);
$image->floodfillPaintImage($hexcolor, $fuzz, $pixel, $x, $y, false);
?>