У меня одноцветное изображение, и я хочу изменить этот цвет с помощью библиотеки GD. Изображение - это PNG, и я хочу сохранить прозрачность. Я написал следующий код, который сохраняет прозрачность и меняет цвет, но результирующий цвет не тот цвет, который я использовал в функции imagefilter.
Например, если я пропущу 0,0,255, то полученное изображение будет 194,194,255.
Пожалуйста, помогите мне решить эту проблему. Вот мой код.
<?php
// first we will create a transparent image. an image that has no color.
$width = 294; $height=333;
$image = imagecreatetruecolor($width,$height); //black image of the specified width x height.
imagealphablending($image, false); // set blend mode to false.
$col=imagecolorallocatealpha($image,255,255,255,127); // fill color
imagefilledrectangle($image,0,0,$width,$height,$col);
imagealphablending($image,true);
$shirt = imagecreatefrompng("primary_shirts/shirt.png");
imagesavealpha($shirt, true);
imagefilter($shirt, IMG_FILTER_GRAYSCALE);
imagefilter($shirt, IMG_FILTER_COLORIZE, 0,0,255);
imagecopy($image, $shirt, 0, 0, 0, 0, $width, $height);
imagealphablending($image,true);
imagealphablending($image,false);
imagesavealpha($image,true);
if(imagepng($image, "primary_shirts/hello.png", 1)){
echo "http://localhost/site/primary_shirts/hello.png";
}
imagedestroy($image);
imagedestroy($shirt);
?>
РЕДАКТИРОВАТЬ: я пытаюсь раскрасить изображение в синий цвет (0,0,255). Этот скрипт раскрашивает изображение, но в результате изображение не (0,0,255), а (76,76,255). Почему так?