(PECL imagick 2, PECL imagick 3)
ImagickPixelIterator::resetIterator β Π‘Π±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ; Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
Π‘Π±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ImagickPixelIterator::getNextIteratorRow() Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π²ΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ.
Π€ΡΠ½ΠΊΡΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ImagickPixelIterator::resetIterator()
<?php
function resetIterator($imagePath) {
$imagick = new \Imagick(realpath($imagePath));
$imageIterator = $imagick->getPixelIterator();
/* ΠΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ */
foreach ($imageIterator as $pixels) {
/* ΠΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌ Π² ΡΡΡΠΎΠΊΠ΅ (ΡΡΠΎΠ»Π±ΡΡ) */
foreach ($pixels as $column => $pixel) {
/** @var $pixel \ImagickPixel */
if ($column % 2) {
/* ΠΠ΅Π»Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½Π° 25% ΠΊΡΠ°ΡΠ½ΡΠΌ*/
$pixel->setColorValue(\Imagick::COLOR_RED, 64);
}
}
/* Π‘ΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ Π΄Π΅Π»Π°ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ */
$imageIterator->syncIterator();
}
$imageIterator->resetiterator();
/* ΠΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ */
foreach ($imageIterator as $pixels) {
/* ΠΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌ Π² ΡΡΡΠΎΠΊΠ΅ (ΡΡΠΎΠ»Π±ΡΡ) */
foreach ($pixels as $column => $pixel) {
/** @var $pixel \ImagickPixel */
if ($column % 3) {
$pixel->setColorValue(\Imagick::COLOR_BLUE, 64); /* ΠΠ΅Π»Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΠΈΠΌ*/
//$pixel->setColor("rgba(0, 0, 128, 0)"); /* Paint every second pixel black*/
}
}
$imageIterator->syncIterator(); /* Π‘ΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ Π΄Π΅Π»Π°ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ */
}
$imageIterator->clear();
header("Content-Type: image/jpg");
echo $imagick;
}
?>