Я imagecopymerge($dst_r, $logo, 0, 0, 0, 0, $LogoX, $LogoY, 100);
где $logo
– это файл png с прозрачным фоном. По какой-то причине фон получается вместо белого.
Что я делаю не так?
Благодарю.
Вам нужно использовать imagealphablending($dst_r, TRUE);
чтобы разрешить копирование с сохранением прозрачных цветов. Многие комментарии (…) в руководстве предполагают использование imagecopy
вместо этого, поскольку imagecopymerge никогда не предназначался для использования с прозрачностью. Если вы все равно используете pct=100
, то нормальная imagecopy может быть вариантом.
Это для текста, но вы можете понять. Было бы более полезно, если бы вы опубликовали весь код.
$font = 25; $string = "Hello"; $im = @imagecreatetruecolor(strlen($string) * $font / 1.5, $font); imagesavealpha($im, true); imagealphablending($im, false); $white = imagecolorallocatealpha($im, 255, 255, 255, 127); imagefill($im, 0, 0, $white); $lime = imagecolorallocate($im, 204, 255, 51); imagettftext($im, $font, 0, 0, $font - 3, $lime, "font.ttf", $string); header("Content-type: image/png"); imagepng($im); imagedestroy($im);