我的问题是这个,我想创建图像,即3个图像的组合,首先是黄色背景,然后我用PHP和GD在上面写一些文字,文字是黑色的,所以我在下一步做了透明,然后我想把那张照片放在背景图片上,所以文字上有纹理。它工作正常,如果我从Gimp中创建的计算机上传PNG,但用gd创建的图片上有透明度,但结果又是带黑色字母的黄色背景。
它应该如何 good result
我现在从代码中获得的内容: enter link description here
现在如何使用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);
答案 0 :(得分:1)
我没有对此进行测试,但根据imagesavealpha函数的手册,
你必须取消设置alphablending(imagealphablending($ im,false))才能使用它。
示例:
// Turn off alpha blending and set alpha flag
imagealphablending($png, false);
imagesavealpha($png, true);