我有有效的代码,图片从 gimp 上传.但是使用 gd 创建的图像不是


I have code that works, with picture uploaded from gimp. But image created with gd not

我的问题是,我想创建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);