Text auf Image bekommt weißen Hintergrund
Matze
- php
Hallo Forum,
ich erstelle mir auf folgende Weise ein Image:
// Bildgröße ermitteln
$size = getimagesize("original.png");
// neues Image erzeugen
$createimg = imagecreatetruecolor($size[0], $size[1]);
imagealphablending($createimg, false);
$preimg = imagecreatefrompng("original.png");
// Originalbild kopieren
imagecopyresized($createpreimg, $preimg, 0, 0, 0, 0, $size[0], $size[1], $size[0], $size[1]);
// Schriftfarbe definieren
$white = imagecolorallocate($createpreimg, 200, 200, 200);
// Text schreiben
$text = 'hund';
imagettftext($createimg, 20, 0, 250, 50, $white, "arialbd.ttf", $text);
Was passiert ist, dass die Buchstaben einen weißen Hintergrund bekommen.
Also ein weißes Rechteck in den Ausmaßen des Buchstaben.
Entferne ich imagealphablending($createimg, false);
ist der weiße Hintergrund weg, allerdings verlier ich auch die Transparenz des Original-Bildes.
Entferne ich imagesavealpha($createimg, true);
sehen bestimmte Teile die vorher "halbtransparent" waren, jetzt ziemlich grob gepixelt aus. Die Verläufe sind "irgendwie" weg. Die Schrift hat dann allerdings keinen weißen Hintergrund mehr, sondern einen in der Farbe der Schrift (hab ich rausgefunden als ich die Schriftfarbe geändert habe).
Das ist wirklich frustrierend.
Wie behalte ich also meine Alpha-Transparenz aber bekomme den Schrifthintergrund weg?
Danke und Grüße, Matze
Sorry, sowas passiert wenn man die Hälfte tippt und die andere kopiert.
$createimg und $createpreimg sind dasselbe.
Hallo,
ich denke ich habe das Problem gelöst.
Das PHP-Handbuch sagt zu imagettftext():
"The color index. Using the negative of a color index has the effect of turning off antialiasing. See imagecolorallocate()."
Durch das deaktivieren von antialias ist der weiße Hintergrund verschwunden.
Allerdings sind die Buchstaben jetzt ziemlich pixelig.
Vielleicht hat da noch jemand einen Tipp, ansonsten bin ich erstmal zufrieden.
Grüße, Matze