$image = new Gmagick('pixel.png');
$width = $image->getImageWidth();
$height = $image->getImageHeight();
for ($row = 0; $row < $width; $row++) {
for ($column = 0; $column < $height; $column++) {
$cropped = clone $image;
$histogram = $cropped->cropImage(1, 1, $column, $row)
->quantizeImage(1, Gmagick::COLORSPACE_RGB, 0, false, false)
->getImageHistogram();
$data[$row][$column] = $histogram[0]->getColor();
}
}
print_r($data);
?>
注:在Imagick和Gmagick中读像素得到的颜色都是RGB形式的,但数据格式有差别。
总体来看,Imagick的实现更简单些,而Gmagick的实现因为没有PixelIterator的概念而稍显复杂。不过,Gmagick没有PixelIterator的概念并不是Bug,而是为了和GraphicsMagick Wand C API接口保持一致。