Php Bilder dynamisch generieren

Element Ingenium

Grünschnabel
Hallo,
habe das folgende Problem,
ich erstelle eine Datei mit einem Buchstaben
und einer bestimmten Größe, die per URL bestimmt wird.
Es funktioniert auch alles (Buchstabe da, richtige Position.....)
PHP:
<?php
	header('Content-type: image/jpeg');
	$img = imagecreatetruecolor($x, $y); //Wie groß ist das Bild
	$color = imagecolorallocate($img, 255, 153, 0); //Schriftfarbe
	$ttf = "./ruritaniaf"; //Schriftart
	imagettftext($img, 36, 0, $xx, $yy, $color, $ttf, $b);
	imagepng($img);
	imagedestroy($img);
?>
Jedoch wird der Bildhintergrund schwarz und nicht weiß :(
Wie bekomme ich hin, das ich den Hintergrund weiß bekomme?

Hier mal der Link zum Bild:
http://www.yannic-stadler.de/sd/b.php?b=L&x=80&y=82&xx=5&yy=63

Schonmal jetzt Danke für die Hilfe :)

MlG und noch einen schönen Abend!
 
Hi

Schau dir am besten einfach die Funktion "imagecolorallocate" :)
MIt dieser kannst du für die image-Funktionen Farben definieren.
Jedoch ist es so, dass die erste Farbe, die du nach einem imagecreatetruecolor oder was auch immer wählst, die des Hintergrundes ist.
Schau einfach zur createtruecolor Funktion im Manuel in den Kommentaren, ich glaub da steht es ;)

Grüße SimonErich
 
Hallo,
dort habe ich bereits geschaut, bin aber nicht weiter daraus schlau geworden.
Deswegen habe ich nun hier gefragt und gehofft, das man mir weiterhelfen kann.
MlG
 
Eigentlich ist alles gesagt.
Die erste Farbe, die per imagecolorallocate() definiert wird ist die Hintergrundfarbe.
Daher:
PHP:
 <?php 
    header('Content-type: image/jpeg'); 
    $img = imagecreatetruecolor($x, $y); //Wie groß ist das Bild 
    $bg = imagecolorallocate($img, 255, 255, 255); //BG
    $color = imagecolorallocate($img, 255, 153, 0); //Schriftfarbe 
    $ttf = "./ruritaniaf"; //Schriftart 
    imagettftext($img, 36, 0, $xx, $yy, $color, $ttf, $b); 
    imagepng($img); 
    imagedestroy($img); 
?>
 
Stimmt.

Wenn man das Bild per imagecreate() erstellt geht es. Wenn man imagecreatetruecolor() macht, geht es nicht.

Zudem ist mir gerade aufgefallen, das der Header ein JPG ist und das ausgegebene Bild ein PNG.

Ob das nun ein korrektes Verhalten ist oder ob hier irgendwie etwas anderes noch gesetzt werden muss, damit es geht, kann ich nicht sagen.
Zur not noch per imagefilledrectangle() ein einen weisses Rechteck "drunter" legen
PHP:
    header('Content-type: image/png');
    $img = imagecreatetruecolor($x, $y); //Wie groß ist das Bild
    $bg = imagecolorallocate($img, 255, 255, 255); //BG
    imagefilledrectangle($img, 0, 0, $x-1, $y-1, $bg);
    $color = imagecolorallocate($img, 255, 153, 0); //Schriftfarbe
    $ttf = "./ruritaniaf"; //Schriftart 
    imagettftext($img, 36, 0, $xx, $yy, $color, $ttf, $b); 
    imagepng($img);
    imagedestroy($img);
 
Zurück