PHP 8.6.0 Beta 1 is available for testing

Imagick::getPixelIterator

(PECL imagick 2, PECL imagick 3)

Imagick::getPixelIteratorReturns a MagickPixelIterator

Description

public function Imagick::getPixelIterator(): ImagickPixelIterator

Returns a MagickPixelIterator.

Parameters

This function has no parameters.

Return Values

Returns an ImagickPixelIterator on success.

Errors/Exceptions

Throws ImagickException on error.

Examples

Example #1 Imagick::getPixelIterator()

<?php
function getPixelIterator($imagePath) {
 $imagick = new \Imagick(realpath($imagePath));
 $imageIterator = $imagick->getPixelIterator();
 foreach ($imageIterator as $row => $pixels) { /* Loop through pixel rows */
 foreach ($pixels as $column => $pixel) { /* Loop through the pixels in the row (columns) */
 /** @var $pixel \ImagickPixel */
 if ($column % 2) {
 $pixel->setColor("rgba(0, 0, 0, 0)"); /* Paint every second pixel black*/
 }
 }
 $imageIterator->syncIterator(); /* Sync the iterator, this is important to do on each iteration */
 }
 header("Content-Type: image/jpg");
 echo $imagick;
}
?>

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 1 note

up
1
Sebastian Herold
18 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;
 
?>
+add a note

AltStyle によって変換されたページ (->オリジナル) /