Moin!
FEHLER GEFUNDEN!!
man darf das bild nicht in truecolor erstellen.
also statt:
$img = imagecreatetruecolor($width,$height);
den hier verwenden:$img = imagecreate($width,$height);
So. Oder auf imagecolorallocate verzichten. Weil das nämlich nur bei 256-Farben-Bildern verwendet wird, nicht bei Truecolor-Bildern.
Entweder hast du ein 256-Farben-Bild. Dann machst du imagecolorallocate, diese Funktion gibt dir einen Farbindex (Wert 0..255) zurück, und den übergibst du als Farbe an alle zeichnenden Funktionen.
Oder du hast ein Truecolor-Bild, dann übergibst du direkt allen zeichnenden Funktionen einen 3-Byte-Farbwert RGB. Und dann klappts auch mit dem Einfärben.
Weiß würdest du beispielsweise als "0xFFFFFF" übergeben. Diese Zahl "0xFFFFFF" ist eine reguläre, aber eben hexadezimale Zahl. Genausogut könntest du ihren Dezimalen Wert (den ich jetzt hier nicht ausrechnen werde) nehmen. Bei Schwarz ist es einfacher: Entweder "0" nehmen, oder hexadezimal "0x000000" - bleibt sich gleich.
Dein imagecolorallocate hat als Rückgabewert 0 oder 1 ergeben - das ist in Truecolor eben schwarz oder supersuperdunkles schwarz-blau (0x000001).
Ach ja: Wenn du RGB in drei verschiedenen Variablen hast:
Farbe = 256 * 256 * R + 256 * G + B
- Sven Rautenberg