Imagick::getPixelIterator

(PECL imagick 2, PECL imagick 3)

Imagick::getPixelIteratorRetorna um MagickPixelIterator

Descrição

public Imagick::getPixelIterator(): ImagickPixelIterator

Retorna um MagickPixelIterator.

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

Retorna um ImagickPixelIterator em caso de sucesso.

Erros/Exceções

Lança uma exceção ImagickException em caso de erro.

Exemplos

Exemplo #1 Exemplo de Imagick::getPixelIterator()

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

foreach (
$imageIterator as $row => $pixels) { /* Faz um laço de repetição pelas linhas de pixels */
foreach ($pixels as $column => $pixel) { /* Faz um laço de repetição pelos pixels na linha (colunas) */
/** @var $pixel \ImagickPixel */
if ($column % 2) {
$pixel->setColor("rgba(0, 0, 0, 0)"); /* Pinta cada segundo pixel de preto */
}
}
$imageIterator->syncIterator(); /* Sincroniza o iterador, é importante fazer isto em cada iteração */
}

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

?>

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
1
Sebastian Herold
17 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