PHP 8.5.0 RC 2 available for testing

Imagick::getPixelIterator

(PECL imagick 2, PECL imagick 3)

Imagick::getPixelIterator β€” Returns a MagickPixelIterator

Опис

public Imagick::getPixelIterator(): ImagickPixelIterator

Returns a MagickPixelIterator.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ

Π£ Ρ†Ρ–Ρ”Ρ— Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Π½Π΅ΠΌΠ°Ρ” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π².

ЗначСння, Ρ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°ΡŽΡ‚ΡŒΡΡ

Returns an ImagickPixelIterator on success.

Помилки/Π²ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ

ΠšΠΈΠ΄Π°Ρ” ImagickException Π² Ρ€Π°Π·Ρ– ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #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;
}

?>

οΌ‹add a note

User Contributed Notes 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