我有代码可以工作,图片从gimp上传。但用gd创建的图像不是

时间:2015-03-16 15:18:22

标签: php png gd

我的问题是这个,我想创建图像,即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);

1 个答案:

答案 0 :(得分:1)

我没有对此进行测试,但根据imagesavealpha函数的手册,

  

你必须取消设置alphablending(imagealphablending($ im,false))才能使用它。

示例:

// Turn off alpha blending and set alpha flag
imagealphablending($png, false);
imagesavealpha($png, true);