我確信有很多人像我一樣一直在想:「你如何設法產生此操作的人類可讀輸出?」
<?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);
?>