PHP Conference Japan 2024

Imagick::getImagePixelColor

(PECL imagick 2, PECL imagick 3)

Imagick::getImagePixelColor傳回指定像素的色彩

描述

public Imagick::getImagePixelColor(int $x, int $y): ImagickPixel

傳回指定像素的色彩。

參數

x

像素的 x 座標

y

像素的 y 座標

傳回值

傳回給定座標色彩的 ImagickPixel 實例。

錯誤/例外

發生錯誤時擲回 ImagickException。

新增筆記

使用者提供的筆記 1 則筆記

12
sheldon at hyperlinked dot com
12 年前
我確信有很多人像我一樣一直在想:「你如何設法產生此操作的人類可讀輸出?」

<?php
$image
= new Imagick('testimage.jpg');

$x = 1;
$y = 1;
$pixel = $image->getImagePixelColor($x, $y);
?>

如果您嘗試印出 $pixel 物件的輸出,您將一無所獲。您必須使用其中一個 ImagickPixel 操作才能取回值。

您可以執行下列任一操作

<?php
$colors
= $pixel->getColor();
print_r($colors); // 產生 Array([r]=>255,[g]=>255,[b]=>255,[a]=>1);

$pixel->getColorAsString(); // 產生 rgb(255,255,255);
?>

我一直被困住的地方是如何將在 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);
?>
To Top