0
在线手册:中文 英文

Imagick::getImagePixelColor

(PECL imagick 2, PECL imagick 3)

Imagick::getImagePixelColorReturns the color of the specified pixel

说明

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

Returns the color of the specified pixel.

参数

x

The x-coordinate of the pixel

y

The y-coordinate of the pixel

返回值

Returns an ImagickPixel instance for the color at the coordinates given.

错误/异常

错误时抛出 ImagickException。

0
在线手册:中文 英文

1位用户评论

[#1] ▲10▼ sheldon@hyperlinked.com [86%] (2012-07-18 23:57:29)

I'm sure there are a lot of people like me who have been wondering, "How you manage to produce a human readable output of this operation?" <?php
$image 
= new Imagick('testimage.jpg');

$x 1
$y 1;
$pixel $image->getImagePixelColor($x$y);
?>
If you try to print an output of the $pixel object, you get nothing. You have to use one of the ImagickPixel operations to get back a value. You can do either of the following: <?php
$colors 
$pixel->getColor();
print_r($colors); // produces Array([r]=>255,[g]=>255,[b]=>255,[a]=>1);

$pixel->getColorAsString(); // produces rgb(255,255,255);
?>
The place where I was getting hung up was how to get the data that was captured in the Imagick::getImagePixelColor operation into an ImagickPixel object. I was trying to find ways of passing the value to a newly instantiated ImagickPixel object. Well, it appears that once you've captured your color data using Imagick::getImagePixelColor, what's returned IS an ImagickPixel object! As a further note, you do not need to convert this to a human readable format if you just want to take a color sample at a single point on your image to plug into another operation. For example, if you wanted to perform a flood fill effect on a certain color you could plug in the instance of the ImagickPixel object directly. The following fill perform a flood fill effect at coordinates 1,1 on your image using Green as the fill color and the color sampled at 1,1 as the target color to fill. <?php
$hexcolor 
'#00ff00';
$fuzz '4000';
$x 1;
$y 1;
$pixel $image->getImagePixelColor($x$y);
$image->floodfillPaintImage($hexcolor$fuzz$pixel$x$yfalse);
?>