Как установить цвет пикселя с помощью imagick для php (imagemagick)?

Я получаю пиксель изображения изображения в определенном месте, используя getImagePixelColor.

$pixel = $image -> getImagePixelColor($x,$y); 

Теперь я изменил цвет этого пикселя с помощью некоторого метода, и теперь я хочу установить новый цвет этого пикселя.

Как я могу сделать ?

Существует функция setColor. Но я получил пиксель из класса Imagick. Но функция setColor находится в классе ImagickPixel. Итак, как я могу это сделать?

Related of "Как установить цвет пикселя с помощью imagick для php (imagemagick)?"

->getImagePixelColor() всегда возвращает объект ImagickPixel, поэтому $pixel->setColor(...); это все, что тебе нужно:

Ссылка: http://php.net/manual/en/imagick.getimagepixelcolor.php

ImagickPixel::setColor() – это правильная функция, но также необходимо синхронизировать итератор пикселей, чтобы ваши манипуляции были записаны обратно на изображение.

Ниже приведен короткий (почти) полный пример, который считывает файл изображения, обрабатывает каждый пиксель и выгружает его в браузер:

 $img = new Imagick('your_image.png'); $iterator = $img->getPixelIterator(); foreach ($iterator as $row=>$pixels) { foreach ( $pixels as $col=>$pixel ){ $color = $pixel->getColor(); // values are 0-255 $alpha = $pixel->getColor(true); // values are 0.0-1.0 $r = $color['r']; $g = $color['g']; $b = $color['b']; $a = $alpha['a']; // manipulate r, g, b and a as necessary // // you could also read arbitrary pixels from // another image with similar dimensions like so: // $otherimg_pixel = $other_img->getImagePixelColor($col,$row); // $other_color = $otherimg_pixel->getColor(); // // then write them back into the iterator // and sync it $pixel->setColor("rgba($r,$g,$b,$a)"); } $iterator->syncIterator(); } header('Content-type: '.$img->getFormat()); echo $img->getimageblob(); 

Вы не можете просто изменить цвет пикселя одного пикселя, вам придется перебирать его, находить нужный пиксель и сохранять файл.

прочитайте http://www.php.net/manual/en/imagick.getpixeliterator.php