For me it was very helpful to read a article at Mikko's blog. He showed that the PixelIterator is not read-only, if you sync it regularly:
<?php
/* Create new object with the image */
$im = new Imagick( "strawberry.png" );
/* Get iterator */
$it = $im->getPixelIterator();
/* Loop trough pixel rows */
foreach( $it as $row => $pixels )
{
/* For every second row */
if ( $row % 2 )
{
/* Loop trough the pixels in the row (columns) */
foreach ( $pixels as $column => $pixel )
{
/* Paint every second pixel black*/
if ( $column % 2 )
{
$pixel->setColor( "black" );
}
}
}
/* Sync the iterator, this is important to do on each iteration */
$it->syncIterator();
}
/* Display the image */
header( "Content-Type: image/png" );
echo $im;
?>
Imagick::getPixelIterator
(PECL imagick 2.0.0)
Imagick::getPixelIterator — Devuelve un objeto MagickPixelIterator
Descripción
Warning
Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.
Devuelve un objeto MagickPixelIterator.
Valores devueltos
Devuelve un objeto ImagickPixelIterator si se tuvo éxito. Lanza ImagickException en caso de error.
Sebastian Herold
30-Jun-2008 08:06
