我相信有很多像我一样的人一直在想,“如何才能生成此操作的人类可读输出?”
<?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);
?>