我的问题是,我想创建3张图像组合的图像,首先是黄色背景,然后我使用PHP和GD在其上写一些文本,文本是黑色的,所以我在下一步中使其透明,然后我想将该图片放在背景图片上,因此文本在其上具有纹理。如果我从在 Gimp 中创建的计算机上传 PNG,它工作正常,但使用 gd 创建的图片具有透明度,但结果再次是带有黑色字母的黄色背景。
它应该如何功
我现在从代码中得到什么:在此处输入链接说明
现在如何获得从GD创建的图像
<?php
header('Content-Type: image/png');
$title = "PULEŽANI";
$im = imagecreatetruecolor(1200, 320);
//$im = imagecreatetruecolor(1200, 320);
$white = imagecolorallocate($im, 255, 255, 255);
$crna = imagecolorallocate($im, 0, 0, 0);
$black = imagecolorallocatealpha($im, 255, 255, 255, 127);
$yellow = imagecolorallocate($im, 251, 189, 8);
// kreiram kvadrat sa žutom pozadinom
imagefill($im, 0, 0, $yellow);
$font = "/AlrightSans-Ultra-v3.ttf";
//dodajem text na žutu pozadinu
imagettftext($im, 122, 0, 40, 160, $crna, $font, $title);
//kreiram sliku crni tekst na žutoj pozadini
imagepng($im, 'sl.png');
imagedestroy($im);
//ovaj dio bi trebao napraviti da crna slova postanu prozirna
$image = imagecreatefrompng('sl.png');
$odabirprozirne = imagecolorallocatealpha($image, 0, 0, 0,127);
imagealphablending($image, true);
imagecolortransparent($image,$odabirprozirne);
imagepng($image, 'sl114.png');
imagedestroy($image);
/* dodaj zvijezde odispod */
$image_1 = imagecreatefrompng('TexturaZvijezde.png');
$image_2 = imagecreatefrompng('sl114.png');
imagesavealpha($image_1, true);
imagecopy($image_1, $image_2, 0, 0, 0, 0, 1200, 120);
imagepng($image_1);
imagedestroy($image_1);
我还没有测试过这个,但根据 imagesavealpha 函数的手册,
您必须取消设置 alphablending(imagealphablending($im, false)),才能使用它。
例:
// Turn off alpha blending and set alpha flag
imagealphablending($png, false);
imagesavealpha($png, true);