Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] imagecopyresampled macht komische Ausgabe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] imagecopyresampled macht komische Ausgabe

    Hey,
    bin grad dabei mir ein Captcha zu erstellen. Die Ordner Struktur(vor dem Ausführen):
    kontaktformular.php
    captcha/
    ------L1/
    --------A.png
    --------B.png
    -------- ...

    Danach:
    captcha.jpg
    kontaktformular.php
    captcha/
    -------L1/
    ---------A.png
    ---------B.png
    --------- ...

    A.png(usw) haben die Maße(200 * 200).
    Wenn ich das Script ausführe sieht captcha.jpg so aus:

    und so sieht ein Buchstabe aus:


    PHP-Code:
    //Größe eines Captcha Buchstaben wir ermittelt
            
    $probeBild imagecreatefrompng("captcha/L1/1.png");
            
    $x_probeBild imagesx($probeBild); //x-Koordinate
            
    $y_probeBild imagesy($probeBild); //y-Koordinat
            
            //Leeres Bild wird erzeugt, in dass die Buchstaben hineinkopiert werden
            
    $x_size $x_probeBild $laenge// Da die länge des Captchas Dyamisch ist, muss auch die länge des Bildes Dynamisch sein
            
    $y_size $y_probeBild//Die Höhe enspricht der Höhe eines Buschstaben
            
    $leeresBild imagecreatetruecolor($x_size,$y_size); //Leeres Bild wird erzeugt
            
            
    foreach($captchaWerte as $key => $wert){
                
    $zufall 1//rand(1,3); Normalerweise rand(), aber im Moment gibt es nur den Ordner L1 mit Inhalt
                
    $bild imagecreatefrompng("captcha/L$zufall/$wert.png");
                
    $dst_x $x_probeBild $key;
                
    imagecopyresampled($leeresBild$bild$dst_x000$x_size$y_size$x_probeBild$y_probeBild);
            }
            
    imagejpeg($leeresBild"captcha.jpg"100); 
    Ich habe folgende Werte erhalten(wenn $laenge = 5 ist):
    $x_probeBild = 200;
    $y_probeBild = 200;
    $x_size = 1000;
    $y_size = 200;

    Wenn ich folgendes mache:
    $dst_x .= $x_probeBild * $key;

    ist dst_x am Schluss: 0200400600800;
    Ich kapier das einfach nicht. Errorreporting ist E_ALL.
    Danke schon Mal

    LG Sony
    Angehängte Dateien


  • #2
    edit: mein Fehler..

    imagecopyresampled($leeresBild, $bild, $dst_x, 0, 0, 0, $x_size, $y_size, $x_probeBild, $y_probeBild);

    der ist falsch... damit streched du ein 200px breites Bild auf 1000px, und das 5 mal..
    das ist die destination width, und da du auch nur 200px (1:1) kopieren willst, solltest du das tun...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Hi,
      danke für deine Antwort, aber ist

      ich werds mal probeiren

      LG Sony

      Kommentar


      • #4
        Vielen vielen Dank.

        So gehts nun:

        PHP-Code:
        imagecopyresampled($leeresBild$bild$dst_x000$x_probeBild$y_probeBild$x_probeBild$y_probeBild); 
        Musste das Manual nach deinem Post noch drei Mal durchlesen bis ich es geschnallt hatte

        LG Sony

        Kommentar

        Lädt...
        X