Библиотека 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");
?>