Imagick::getPixelIterator

(PECL imagick 2, PECL imagick 3)

Imagick::getPixelIteratorDevuelve un objeto MagickPixelIterator

Descripción

Imagick::getPixelIterator(): ImagickPixelIterator

Devuelve un objeto MagickPixelIterator.

Valores devueltos

Devuelve un objeto ImagickPixelIterator si se tuvo éxito.

Errores/Excepciones

Lanza ImagickException en caso de error.

Ejemplos

Ejemplo #1 Imagick::getPixelIterator()

<?php
function getPixelIterator($imagePath) {
$imagick = new \Imagick(realpath($imagePath));
$imageIterator = $imagick->getPixelIterator();

foreach (
$imageIterator as $fila => $píxeles) { /* Recorrer las filas de píxeles */
foreach ($píxeles as $columna => $píxel) { /* Recorrer los píxeles de la fila (columnas) */
/** @var $pixel \ImagickPixel */
if ($columna % 2) {
$píxel->setColor("rgba(0, 0, 0, 0)"); /* Pintar cada segundo píxel de negro */
}
}
$imageIterator->syncIterator(); /* Sincronizar el iterador; esto es importante en cada iteración */
}

header("Content-Type: image/jpg");
echo
$imagick;
}

?>

add a note add a note

User Contributed Notes 1 note

up
1
Sebastian Herold
16 years ago
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;
      
?>
To Top