Grafik (.gif) mit transparentem Schriftzug

Wie bekommt man auf eine gif-Grafik einen transparenten Schriftzug. Mit dem folgenden Codeausschnitt wird mir keine transparenz im Schriftzug ausgegeben.
PHP:
header( 'Content-type: image/gif' );

$wasserzeichentext = "Copyright by";
$font = "./gigi.ttf";
$fontsize = 48;
$angel = 45;
$temp = "./Unbenannt-1.gif";
$color = "#000000";
$color = ltrim($color,"#");
$r=hexdec(substr($color,0,2));
$g=hexdec(substr($color,2,2));
$b=hexdec(substr($color,4,2));


$im = imagecreatefromgif($temp);
$fontcolor = imagecolorallocatealpha ($im, $r, $g, $b, 110); //sollte die schriftfarbe mit transparenz versetzen
imagettftext ($im, $fontsize, $angel, 50,400, $fontcolor, $font, $wasserzeichentext);
imagegif ($im);
imagedestroy ($im);
 
Mit imagecolortransparenz() hatte ich schon versucht, aber hatte nicht den gewünschten Effekt. Habe aber eine für mich funktionierende Lösung gefunden.

PHP:
header( 'Content-type: image/gif' );

$wasserzeichentext = "Copyright by";
//Link zum Font
$font = "./Verdana.ttf";
//Schriftgroesse
$fontsize = 60;
//Winkel
$angel = 45;
//Link zur Grafik
$temp = "./Unbenannt-1.gif";
//Schriftfarbe
$color = "#ff240b";

$color = ltrim($color,"#");
$r=hexdec(substr($color,0,2));
$g=hexdec(substr($color,2,2));
$b=hexdec(substr($color,4,2));
//Alphawert 1-127
$alpha = 100;
//prozentual berrechnet zum Alphawert
$alphamerge = 100-($alpha*100/127);


$wim = imagecreatetruecolor(600,700);
//Hintergrundfarbe mit voller Tranzparenz
$back = imagecolorallocatealpha($wim , 0, 0, 0, 127); 
//hintergrund mit $back füllen
imagefill($wim,0,0, $back);
//Hintergrundfarbe tranparent setzen
imagecolortransparent($wim, $back);
$fontcolor = imagecolorallocatealpha ($wim, $r, $g, $b, $alpha); 
imagettftext ($wim, $fontsize, $angel, 30,400, $fontcolor, $font, $wasserzeichentext);

$im = imagecreatefromgif($temp);
imagecopymerge($im, $wim, 0, 0, 0, 0, 600, 700, $alphamerge);

imagegif ($im);
imagedestroy ($im);
imagedestroy($wim);
 
Wennd u den Hintergrund trasnparent haben willst, dann ja.
Oben hast du angegeben, dass du die Textfarbe Transparent haben willst....
 
Das ist schon richtig - so wie ich es geschrieben habe. Im neuen Code mußte ich es erst einen Hintergrund für den Schriftzug festlegen mit einer Füllfarbe (sh. Variablen $wim und $back). Den Hintergrund füllen (imagefill) und diesen dann mit imagecolortransparent() auf tranparent setzen. Erst dann wird im Zusammenhang mit imagecopymerge() der Schriftzug auf meinem eigentlichen Hintergrund ($temp) transparent.
 

Neue Beiträge

Zurück