Hintergrundbild zwischen farbe und text

4udesigns

Erfahrenes Mitglied
Hallo,
Uch habe ein Captchabild gemacht.
Jetzt wollte ich ein PNG-Bild vor die zufällige Hintergrundfarbe setzen, doch das bild ist fast komplett schwarz. captcha:
captcha.php
captcha.png:
captcha.png


Mein code:
PHP:
//Bild anzeigen lassen
header("Content-Type: image/jpeg");

session_start();

    $CAPTCHA_LENGTH = 5;    // Länge der Captcha-Zeichenfolge, hier fünf Zeichen
    $FONT_SIZE      = 18;   // Schriftgröße der Zeichen in Punkt
    $IMG_WIDTH      = 170;  // Breite des Bild-Captchas in Pixel
    $IMG_HEIGHT     = 60;   // Höhe des Bild-Captchas in Pixel

    // Liste aller verwendeten Fonts
    $FONTS[] = '/font/BRADHITCF';
    $FONTS[] = '/font/TEMPSITCF';
    $FONTS[] = '/font/JOKERMANF';
    $FONTS[] = '/font/VINERITCF';

    // Unser Zeichenalphabet
    $ALPHABET = array('A', 'B', 'C', 'D', 'E', 'F', 'G',
                      'H', 'Q', 'J', 'K', 'L', 'M', 'N',
                      'P', 'R', 'S', 'T', 'U', 'V', 'Y',
                      'W', '2', '3', '4', '5', '6', '7');

    // Wir teilen dem Browser mit, dass er es hier mit einem JPEG-Bild zu tun hat.
    header('Content-Type: image/jpeg', true);

    // Wir erzeugen ein leeres JPEG-Bild von der Breite IMG_WIDTH und Höhe IMG_HEIGHT
    $img = imagecreatetruecolor($IMG_WIDTH, $IMG_HEIGHT);

    // Wir definieren eine Farbe mit Zufallszahlen
    // Die Farbwerte sind durchgehend und absichtlich hoch (200 - 256) gewählt,
    // um eine "leichte" Farbe zu erhalten
    $col = imagecolorallocate($img, rand(150, 180), rand(200, 210), rand(220, 245));

    // Wir füllen das komplette Bild mit der zuvor definierten Farbe
    imagefill($img, 0, 0, $col);


//Bilder in Variablen Laden
$Grafik = ImageCreateFromPNG("http://discreated.de/img/captcha.png");

//Bearbeitung
ImageCopy($Grafik, $Grafik,
imagesx($Grafik)-imagesx($Grafik),
imagesy($Grafik)-imagesy($Grafik), 0, 0,
imagesx($Grafik),
imagesy($Grafik));

    $captcha = ''; // Enthält später den Captcha-Code als String
    $x = 20; // x-Koordinate des ersten Zeichens, 10 px vom linken Rand


    for($i = 0; $i < $CAPTCHA_LENGTH; $i++) {

        $chr = $ALPHABET[rand(0, count($ALPHABET) - 1)]; // ein zufälliges Zeichen aus dem definierten Alphabet ermitteln
        $captcha .= $chr; // Der Zeichenfolge $captcha das ermittelte Zeichen anfügen

        $col = imagecolorallocate($img, rand(0, 255), rand(0, 150), rand(0, 10)); // einen zufälligen Farbwert definieren
        $font = $FONTS[rand(0, count($FONTS) - 1)]; // einen zufälligen Font aus der Fontliste FONTS auswählen

        $y = 30 + rand(2, 6); // die y-Koordinate mit einem Mindestabstand plus einem zufälligen Wert festlegen
        $angle = rand(0, 20); // ein zufälliger Winkel zwischen 0 und 30 Grad

        /*
         * Diese Funktion zeichnet die Zeichenkette mit den
         * gegeben Parametern (Schriftgröße, Winkel, Farbe, TTF-Font, usw.)
         * in das Bild.
         */
        imagettftext($img, $FONT_SIZE, $angle, $x, $y, $col, $font, $chr);

        $dim = imagettfbbox($FONT_SIZE, $angle, $font, $chr); // ermittelt den Platzverbrauch des Zeichens
        $x += $dim[4] + abs($dim[6]) + 10; // Versucht aus den zuvor ermittelten Werten einen geeigneten Zeichenabstand zu ermitteln

    }



//Bilder ausgabe
imagepng($Grafik);

//Bild Speichern
imagepng($Grafik, "./captcha.jpeg");

$_SESSION["captcha"] = $captcha;

woran liegt das?
lg 4udesigns
 
Soweit ich weiss unterstützt Captcha irgendie die datei Endung PNG nicht allerdings kann ich dir hierzu nicht genaueres sagen

Durchaus möglich das es daran liegt das der Hintergrund bei PNG "Transparent" der Bereich in dem es Durchsichtig erscheint nicht hinterlegt und dem zu folge es vorerst Schwarz darstellt was natürlich nicht besonderlich gut aussieht ^^
 
Zurück