Использование $ им не $ ЦСИ, - как Сайед отметил, imagecreatefrompng принимает имя файла (строка) в качестве аргумента - не GD ресурсов. Зачем устанавливать $ src, если $ im уже содержит ресурс GD, готовый для использования?
Важная часть с imagettftext. Я смог воспроизвести эффект пустой иконки, если GD не может найти шрифт в заданном пути. Проверьте свое местоположение, разрешения и почтовый ящик. Кроме того, если вы решили просто скопировать файл .ttf прямо в место расположения сценария, см. imagettftext() documentation, так как существует важное предостережение с расширением «.ttf».
Кроме того, чтобы создать полностью прозрачное использование изображения: (Джорджа Эдисона в PHP doc for imagefill
$im = imagecreatetruecolor(317, 196);
$transparent = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagefill($im, 0, 0, $transparent);
imagesavealpha($im, TRUE);
Кроме того, из PHP doc for imagecopymerge() Сина Салека: функция imagecopymerge_alpha для обеспечения истинного transperency в imagecopymerge()
Итак, мое решение:
<?php
//Set the Content Type
header("Content-type: image/png");
#dispaly the image
$file='test.png';
$im = imagecreatetruecolor(317, 196);
$transparent = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagefill($im, 0, 0, $transparent);
imagesavealpha($im, TRUE);
$blue = imagecolorallocatealpha($im, 0, 0, 255, 0);
//text to draw
$text="hello world";
putenv('GDFONTPATH=' . realpath('.'));
$font = 'lucida';
imagettftext($im, 20, 0, 10, 50, $blue, $font, $text);
$dest=imagecreatefrompng($file);
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge_alpha($dest, $im, 10, 10, 0, 0, 200, 180, 100);
imagepng($dest);
imagedestroy($dest);
imagedestroy($im);
function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){
// creating a cut resource
$cut = imagecreatetruecolor($src_w, $src_h);
// copying relevant section from background to the cut resource
imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h);
// copying relevant section from watermark to the cut resource
imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h);
// insert cut resource to destination image
imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
}
?>
Не используйте '' imagecreatefrompng' для $ im' – Sayed
Black будет '0,0,0', а не '255255255' я думаю. –