function row_dump($row, $pixels) { printf("[%d] ", $row); if ($pixels === null) { var_dump($pixels); } else { printf("(%d)", count($pixels)); foreach ($pixels as $pixel) { $color = $pixel->getColor(false); printf(" #%02x%02x%02x", $color['r'], $color['g'], $color['b']); } printf("\n"); } } $magick = new Imagick(__DIR__ . '/facebook.png'); $iterators = array(ImagickPixelIterator::getPixelIterator($magick), ImagickPixelIterator::getPixelRegionIterator($magick, 40, 30, 20, 10)); foreach ($iterators as $iterator) { for ($i = 0; $i < 5; ++$i) { echo "== {$i} ==\n"; row_dump($iterator->getIteratorRow(), $iterator->getCurrentIteratorRow()); row_dump($iterator->getIteratorRow(), $iterator->getPreviousIteratorRow()); row_dump($iterator->getIteratorRow(), $iterator->getNextIteratorRow()); row_dump($iterator->getIteratorRow(), $iterator->getNextIteratorRow()); switch ($i) { case 0: $iterator->setIteratorRow(5); break; case 1: $iterator->setIteratorFirstRow(); break; case 2:
<?php function count_rows($pix) { $rows = 0; foreach ($pix as $r) { $rows++; } return $rows; } function count_objects($pix) { $objects = 0; foreach ($pix as $r) { foreach ($r as $o) { $objects++; } } return $objects; } $im = new Imagick('magick:rose'); $it1 = new ImagickPixelIterator($im); $it2 = ImagickPixelIterator::getPixelIterator($im); echo (count_rows($it1) == count_rows($it2) ? "match" : "no") . PHP_EOL; echo (count_objects($it1) == count_objects($it2) ? "match" : "no") . PHP_EOL; $it1->newPixelIterator(new Imagick('magick:rose')); echo 'done' . PHP_EOL;