У меня есть прозрачное изображение PNG. Прозрачные области должны оставаться полностью прозрачными, а другие области необходимо подкрасить определенным оттенком.
Как лучше всего это сделать с помощью GD?
С уважением,
Джеймс
У меня есть прозрачное изображение PNG. Прозрачные области должны оставаться полностью прозрачными, а другие области необходимо подкрасить определенным оттенком.
Как лучше всего это сделать с помощью GD?
С уважением,
Джеймс
Приведенное выше решение не сработало для меня.
Здесь вы заполняете альфа-область красным цветом; что я считаю не является целью. Цель состоит в том, чтобы подкрасить остальную часть изображения и оставить альфу без изменений. (Кроме того, неправильное использование функции imagecolorallocate, вы должны использовать imagecolorallocatealpha.)
Мне удалось использовать imagefilter и раскрасить следующим образом:
фильтр изображений($image, IMG_FILTER_COLORIZE, 0, 255, 0, 30) ;
нанести тонировку.
Библиотека GD поддерживает альфа-прозрачность, так что это не должно быть проблемой. Вот как я это собрал — вам может понадобиться настроить это, но суть должна быть там.
Красный/зеленый/синий 0-255. Альфа 0-127 (127 полностью прозрачный). Этот код должен применить 50% красный оттенок к изображению "original.png" и вывести как "output.png".
<?php
$red = 255;
$green = 0;
$blue = 0;
$alpha = 63
$src_img = imagecreatefrompng("original.png");
$tint_img = imagecreatetruecolor(imagesx($im_src), imagesy($im_src));
$tintcolor = imagecolorallocate($tint_img, $red, $green, $blue, $alpha);
imagefill($tint_img, 0, 0, $tintcolor);
imagecopymerge($tint_img, $src_img, 0, 0, 0, 0, imagesx($im_src), imagesy($img_src), 100);
imagepng("output.png");
?>