@jeromy_ruecker
Для замены определенного цвета на картинке с помощью Imagick в PHP необходимо выполнить следующие шаги:
- Загрузить изображение с помощью функции readImage():
1
2
|
$image = new Imagick();
$image->readImage('path/to/image.jpg');
|
- Определить цвет, который необходимо заменить, и цвет на который нужно его заменить. Например, заменим все зеленые пиксели на красные:
1
2
|
$greenColor = new ImagickPixel('#00ff00');
$redColor = new ImagickPixel('#ff0000');
|
- Создать новое изображение с помощью функции clone():
1
|
$newImage = clone $image;
|
- Используя цикл for, перебрать все пиксели изображения и заменить зеленый цвет на красный:
1
2
3
4
5
6
7
8
|
for ($x = 0; $x < $newImage->getImageWidth(); $x++) {
for ($y = 0; $y < $newImage->getImageHeight(); $y++) {
$pixel = $newImage->getImagePixelColor($x, $y);
if ($pixel->isSimilar($greenColor, 1)) {
$newImage->setImagePixelColor($redColor, $x, $y);
}
}
}
|
- Сохранить измененное изображение с помощью функции writeImage():
1
|
$newImage->writeImage('path/to/new_image.jpg');
|
Полный пример кода:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$image = new Imagick();
$image->readImage('path/to/image.jpg');
$greenColor = new ImagickPixel('#00ff00');
$redColor = new ImagickPixel('#ff0000');
$newImage = clone $image;
for ($x = 0; $x < $newImage->getImageWidth(); $x++) {
for ($y = 0; $y < $newImage->getImageHeight(); $y++) {
$pixel = $newImage->getImagePixelColor($x, $y);
if ($pixel->isSimilar($greenColor, 1)) {
$newImage->setImagePixelColor($redColor, $x, $y);
}
}
}
$newImage->writeImage('path/to/new_image.jpg');
|