То, что кажется простым, не является 🙁
Я пытаюсь добавить что-то вроде водяного знака (прозрачный png) на изображении (jpg). Это код, который я использую:
$width = 800; $height = 600; $bottom_image = imagecreatefromjpeg("portrait1.jpg"); $top_image = imagecreatefrompng("man2.png"); imagesavealpha($top_image, true); imagealphablending($top_image, true); imagecopy($bottom_image, $top_image, 200, 200, 0, 0, $width, $height); header('Content-type: image/png'); imagepng($bottom_image);
Когда я объединять изображения, png расположен в нужном месте, каждый из них выше и слева от него хорош (jpg копируется), но все остальное черное.
Я пробовал устанавливать imagesavealpha и imagealphablending на false, не было никакой разницы.
Вы можете увидеть результирующее изображение по адресу http://ekstrakt.selfip.com/photobomb/image.php
Я искал по сети, я не могу найти решение.
Любая помощь приветствуется.
Ваши $width
и $height
должны быть размером водяного знака, а не фотографии. То, что вы говорите, нужно скопировать водяной знак с гораздо большим размером, чем есть. Когда он читает часть изображения, которое не существует (координаты за пределами), результат является непрозрачным черным, давая результат, который вы видите.
Используйте imagecopymerge () вместо imagecopy()
U может также понравиться imagesavealpha ()