У меня есть PNG, и я пытаюсь объединить его поверх JPG. Со следующим кодом
$dest = imagecreatefromjpeg("example.jpg"); $src = imagecreatefrompng("example.png"); imagealphablending($dest, false); imagesavealpha($dest, true); imagealphablending($src, true); imagecopymerge($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, 100); header('Content-Type: image/png'); imagepng($dest, "user/".$imei."/".$picCount."_m"); imagedestroy($dest); imagedestroy($src);
Результаты в следующем
Я также попробовал предложение по аналогичному вопросу, в котором говорилось, что он использует «imagecopyresampled» isntead of «imagecopymerge», но когда я это сделал, шляпа Санта совсем не появлялась.
Что мне нужно изменить, чтобы заставить шляпу Санта сохранить прозрачность при объединении?
Решение потребовало использования как «imagecopyresampled». Также удаление строк 4 и 5 из опубликованного исходного кода.
imagealphablending($dest, false); imagesavealpha($dest, true);
Вот полная рабочая версия
$dest = imagecreatefromjpeg("example.jpg"); $src = imagecreatefrompng("example.png"); imagecopyresampled($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, $src2w, $src2h); header('Content-Type: image/png'); imagejpeg($dest, "user/".$imei."/".$picCount."_m.jpeg"); imagedestroy($dest); imagedestroy($src);