Я изменил ваш код, комментируя некоторые строки и корректируя размеры, чтобы предотвратить черный фон:
<?php
header("Content-type: image/png");
$im = imagecreatefrompng("orange.png");
//$trans_background = imagecolorallocate($im, 0, 0, 0, 127);
$logo = imagecreatefrompng('logo.png'); //logo image dimensions = 64 x 64 px
//imagesavealpha($logo, true);
//imagefill($logo, 0, 0, $trans_background);
imagecopy($im, $logo, 100, 100, 0, 0, 64, 64); // dimensions of the logo image 64 * 64 px
imagepng($im);
imagedestroy($logo);
imagedestroy($im);
![enter image description here](https://i.stack.imgur.com/KkHN9.jpg)
Изображение конверта в Снимок экрана - прозрачное изображение PNG размером 64 * 64 пикселей.
Обновление:
Если вы хотите добавить собственный фон к изображению lo go и хотите динамически определять его размеры, вам придется использовать imagesx()
для получения ширины и imagesy()
для получения высоты. Кроме того, вы должны использовать imagecolorallocatealpha()
в своем коде вместо imagecolorallocate()
<?php
header("Content-type: image/png");
$im = imagecreatefrompng("orange.png");
$trans_background = imagecolorallocatealpha($im, 0, 0, 100, 50);
// Blue background // to be transparent imagecolorallocatealpha ($im, 0,0,0,127)
$logo = imagecreatefrompng('logo2.png');
imagesavealpha($logo, true);
imagefill($logo, 0, 0, $trans_background);
imagecopy($im, $logo, 100, 100, 0, 0, imagesx($logo), imagesy($logo));
imagepng($im);
imagedestroy($logo);
imagedestroy($im);
Прозрачный пример: ![enter image description here](https://i.stack.imgur.com/rvTwM.jpg)