Я хочу раскрасить некоторые PNG, используя PHP GD.Для тестирования я жестко закодировал красный цвет (255,0,0), который позже будет заменен динамической переменной.
Например, у меня есть два изображения:
Изображение 1:
Изображение 2:
Используя мой код, только изображение 2 работает как должно.
Изображение собаки, однако, имеет какую-то серую коробку, не знаю, откуда это, черт возьми.
Вот код, который я использую:
<?php
$im = imagecreatefrompng('dog.png');
imagealphablending($im, false);
imagesavealpha($im, true);
$w = imagesx($im);
$h = imagesy($im);
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$color = imagecolorsforindex($im, imagecolorat($im, $x, $y));
$r = ($color['red'] * 255) / 255;
$g = ($color['green'] * 0) / 255;
$b = ($color['blue'] * 0) / 255;
imagesetpixel($im, $x, $y, imagecolorallocatealpha($im, $r, $g, $b, $color['alpha']));
}
}
imagepng($im, 'result.png');
imagedestroy($im);
Почему он работает с изображением 2, но не с изображением 1?Я могу только думать о какой-то альфа-маске, которая происходит с изображением 1.
Надеюсь, кто-нибудь может мне помочь