Ivica Šuran
Ivica Šuran

Reputation: 11

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

My problem is this, I want to create image thats combination of 3 image, first is yellow background, then I use PHP and GD to write some text on it, text is black, so I made it transparent in next step, then I want to put that picture over background picture, so text has texture on it. It works fine, if I upload PNG from my computer created in Gimp, but picture created with gd has transparency on it but result is again yellow background with black letters.

how it should be good result

what I get now from code: enter link description here

how it gets now with image created from 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);

Upvotes: 1

Views: 108

Answers (1)

Marko
Marko

Reputation: 3599

I haven't tested this, but according to the manual for imagesavealpha function,

You have to unset alphablending (imagealphablending($im, false)), to use it.

Example:

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

Upvotes: 1

Related Questions