Bildgröße ändern, Fehler bei imagecopyresized()

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

  • Bildgröße ändern, Fehler bei imagecopyresized()

    Hallo

    Prüfe bei dem unten stehenden Script ob das Bild ja größer als 600 Pixel
    ist. Wenn ja soll es verkleinert werden dabei tritt dann aber nen Fehler bei
    imagecopyresized() auf.

    Was mache ich da falsch?

    PHP-Code:
    $error "0";
    $error_log "<span class=\"text10pt\"><B>Folgende(r) Fehler sind/ist
    aufgetreten:</b><BR>"
    ;

    $datum $_POST["datum"];
    $zeitung $_POST["zeitung"];
    $header $_POST["header"];
    $bild $_FILES["bild"]["tmp_name"];
    echo(
    "$bild");

    if(
    $bild != null)
    {
    /*Prüfung der Einträge*/
    if(!$datum or $datum == "YYYY-MM-DD")
    {
    $error 1;
    $error_log .= "<LI>Es wurde keine Datum angegeben.<br>";
    }
    if(!
    $zeitung)
    {
    $error 1;
    $error_log .= "<LI>Es wurde keine Zeitung angegeben.<br>";
    }
    if(!
    $header)
    {
    $error 1;
    $error_log .= "<LI>Es wurde kein Header angegeben.<br>";
    }
    /*Prüfung der Einträge ENDE*/

    /*Eintragen in die Datenbank*/
    if(!$error)
    {
    $sql "INSERT INTO presse (datum, zeitung, header)";
    $sql .= " VALUES ('$datum', '$zeitung', '$header')";
    mysql_query($sql);

    $sql mysql_query("SELECT * FROM presse WHERE datum = '$datum' AND zeitung
    = '
    $zeitung' AND header = '$header'");
    if(
    $out mysql_fetch_array($sql))
    {
    $presseid $out["id"];
    }
    /*Eintragen in die Datenbank*/

    /*Datei Upload */

    $ziel "images/presse/";

    /*getimagesize*/
    $getimagesize getimagesize($bild);
    $h $getimagesize[0];
    $b $getimagesize[1];
    $t $getimagesize[2];

    if(
    $t == 1)
    {
    $end ".gif";
    }
    if(
    $t == 2)
    {
    $end ".jpg";
    }
    if(
    $t == 3)
    {
    $end ".png";
    }

    $ziel .= $presseid .$end;
    /*getimagesize ENDE*/

    /*imagecopyresized*/
    $bn "600";
    if(
    $b >= $bn)
    {
    $v $b $h;
    $hn round($bn $v);

    $bildn imagecreate($bn$hn);

    echo(
    "$bildn");

    imagecopyresized($bildn,$bild,0,0,0,0,$bn,$hn,$b,$h);

    }
    else
    {
    $hn $h;
    $bildn $bild;
    }
    /*imagecopyresized ende*/

    echo("$bildn");

    /*Bild upload*/

    if(file_exists($ziel) or !copy($bildn$ziel))
    {
    $error 1;
    $error_log .= "<LI> Ein Fehler beim Kopieren der Datei $file_name ist
    aufgetreten!<BR>"
    ;
    }
    //wenn kein error ENDE

    if($error == 1)
    {

    $sql "DELETE FROM presse WHERE id = '$presseid' LIMIT 1";
    mysql_query($sql);

    echo(
    $error_log "<BR> Die Datei wurde nicht hochgeladen. Vorgang
    abgebrochen!"
    );
    if(
    file_exists($ziel)) : unlink($ziel); endif;
    } else {
    echo(
    "Die Datei <b> " basename($ziel) . "</b> wurde erfolgreich
    hochgeladen. <BR><BR>"
    );

    $imgtag "width=\"".$bn."\" height=\"".$hn."\"";

    $sql "UPDATE presse SET bild = '$ziel', imgtag = '$imgtag' WHERE id =
    '
    $presseid' LIMIT 1";
    mysql_query($sql);

    unlink($bild);
    unlink($bildn);
    }

    } else {
    echo(
    "<BR>Die Datei wurde nicht hochgeladen. Vorgang abgebrochen, da keine
    Datei angegeben wurde!"
    );


    /srv/www/htdocs/web12/phptmp/phpn2c9TXResource id #23
    Warning: imagecopyresized(): supplied argument is not a valid Image resource
    in /srv/www/htdocs/web12/html/login/presseadd.inc.php on line 85
    Resource id #23
    Warning: copy(Resource id #23): failed to open stream: No such file or
    directory in /srv/www/htdocs/web12/html/login/presseadd.inc.php on line 98
    Folgende(r) Fehler sind/ist aufgetreten:

    a.. Ein Fehler beim Kopieren der Datei ist aufgetreten!

    Die Datei wurde nicht hochgeladen. Vorgang abgebrochen!

    Vielleicht könnt ihr mir dabei Helfen ich weiß leider nicht an was es liegt.

    Vielen Dank im Vorraus.

    Gruss Mathis

  • #2
    imagecopyresized() erwartet eine resource eines bildes, keinen namen ...
    mit imageCreateFrom*() solltest du weiterkommen.
    Kissolino.com

    Kommentar


    • #3
      du meinst ich sollte statt

      imagecreate() einfach imagecreatefromjpeg() nehmen?

      Bringt doch eigentlich nicht da dann ja einfach nur eine JPEG Datei erzeugt wird oder?


      Wenn ich falsch liege bitte korigieren!!!

      Kommentar


      • #4
        korrigier dich im Manual!

        Kommentar


        • #5
          ja, du liegst falsch ... du brauchst 2 bild-resources ... 1 zielbild => imagecreate(truecolor)() ... ein ausgangsbild ... imagecreatefrom*()

          was du übergibst ist nur der temporäre name des heraufgeladenen bildes als "ausgangsbild", deshalb wirft die funktion den fehler aus.
          Kissolino.com

          Kommentar


          • #6
            ok das habe ich nun verstanden! (ist das erstemal das ich mit den image befehlen bei php arbeite)


            PHP-Code:
            /*imagecopyresized*/
            $bn "600";
            if(
            $b >= $bn)
            {
            $v $b $h;
            $hn round($bn $v);

            $bildn imagecreate($bn$hn);

            if(
            $t == 1)
            {
            $bild imagecreatefromgif($bild);
            }
            if(
            $t == 2)
            {
            $bild imagecreatefromjpeg($bild);
            }
            if(
            $t == 3)
            {
            $bild imagecreatefrompng($bild);
            }

            imagecopyresized($bildn,$bild,0,0,0,0,$bn,$hn,$b,$h);

            }
            else
            {
            $hn $h;
            $bildn $bild;
            }
            /*imagecopyresized ende*/ 

            nun tritt aber leider dieser fehler auf:

            Warning: copy(Resource id #23): failed to open stream: No such file or directory in /srv/www/htdocs/web12/html/login/presseadd.inc.php on line 107
            Folgende(r) Fehler sind/ist aufgetreten:

            Ein Fehler beim Kopieren der Datei ist aufgetreten!

            Die Datei wurde nicht hochgeladen. Vorgang abgebrochen!
            Das soll an der Zeile liegen
            PHP-Code:
            if(file_exists($ziel) or !copy($bildn$ziel)) 

            Kommentar


            • #7
              du solltest vielleicht nochmal die grundlagen "arbeiten mit dem filesystem" auffrischen und nicht äpfel mit birnen verwechseln

              1. copy() kopiert eine datei von a nach b
              2. imagecopyresized() erzeugt/schreibt keine datei sondern arbeitet mit bildresourcen (=> php hats nur im speicher) ... ergo erst datei erzeugen => imagejpeg(), imagepng()
              3. wäre es imho besser,
              a) erst den upload durchzuführen (und statt copy, move_uploaded_file zu verwenden)
              b) dann das bild zu verkleinern und zu überschreiben
              Kissolino.com

              Kommentar


              • #8
                ich denke du meinst es so (ich hoffe es)

                man lädt die datei hoch über das formular,
                datei ist dann in dem phptmp verzeichnis gespeichert.
                datei wir via getimagesize() geprüft.
                die datei wird mit move_uploaded_file() in den ordner $ziel verschoben und dabei gleichzeitig umbenannt (macht dass das move_uploaded_file script?).
                wenn die datei nun größer als 600 pixel breit war (wurde bei getimagesize() geprüft) wird die datei nochmals auf gerufen.
                datei wird nun in der prozedur geändert

                PHP-Code:
                $bn "600";
                if(
                $b >= $bn)
                {
                $v $b $h;
                $hn round($bn $v);

                $bildn imagecreate($bn$hn);

                if(
                $t == 1)
                {
                $bild imagecreatefromgif($bild);
                }
                if(
                $t == 2)
                {
                $bild imagecreatefromjpeg($bild);
                }
                if(
                $t == 3)
                {
                $bild imagecreatefrompng($bild);
                }

                imagecopyresized($bildn,$bild,0,0,0,0,$bn,$hn,$b,$h); 
                oder?

                Und dan müsste das Bild irgendwo mit wieder gespeichert werden!?!

                Lag ich richtig?

                Gruss Mathis
                Und danke schon mal für die Hilfe!

                Kommentar


                • #9
                  Original geschrieben von Sihtam
                  Lag ich richtig?
                  jepp.

                  ... die funktionen zum schreiben stehen ^^ ... move_uploaded_file() arbeitet wie copy() NUR ausschliesslich mit upgeloadeten daten => s. php-manual
                  Kissolino.com

                  Kommentar


                  • #10
                    also das mit dem datei verschieben klappt wunderbar!!! *danke dir*

                    aber mit welchem befehl ist es jetzt am einfachsten das bild einfach nur aufzurufen die größe gegebenfalls zu verändern und zu überschreiben???

                    Kommentar


                    • #11
                      du hast doch schon alles, was du brauchst ... bis auf das schreiben ... und die befehle habe ich dir ^^ schon genannt.
                      Kissolino.com

                      Kommentar


                      • #12
                        ich denke ich mache da wieder was falsch!!!

                        ÿØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ X"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ× ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓ ÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ùþŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š(
                        .
                        .
                        .
                        .
                        Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙ
                        Warning: unlink(/srv/www/htdocs/web12/phptmp/phpZyNSC8): No such file or directory in /srv/www/htdocs/web12/html/login/presseadd.inc.php on line 123
                        der fehler tritt auf!!!

                        der code sieht jetzt wie folgt aus:
                        PHP-Code:
                        $error "0";
                        $error_log "<span class=\"text10pt\"><B>Folgende(r) Fehler sind/ist aufgetreten:</b><BR>";

                        $datum $_POST["datum"];
                        $zeitung $_POST["zeitung"];
                        $header $_POST["header"];
                        $bild $_FILES["bild"]["tmp_name"];

                        if(
                        $bild != null)
                        {
                        /*Prüfung der Einträge*/
                        if(!$datum or $datum == "YYYY-MM-DD")
                        {
                        $error 1;
                        $error_log .= "<LI>Es wurde keine Datum angegeben.<br>";
                        }
                        if(!
                        $zeitung)
                        {
                        $error 1;
                        $error_log .= "<LI>Es wurde keine Zeitung angegeben.<br>";
                        }
                        if(!
                        $header)
                        {
                        $error 1;
                        $error_log .= "<LI>Es wurde kein Header angegeben.<br>";
                        }
                        /*Prüfung der Einträge ENDE*/

                        /*Eintragen in die Datenbank*/
                        if(!$error)
                        {
                        $sql "INSERT INTO presse (datum, zeitung, header)";
                        $sql .= " VALUES ('$datum', '$zeitung', '$header')";
                        mysql_query($sql);

                        $sql mysql_query("SELECT * FROM presse WHERE datum = '$datum' AND zeitung = '$zeitung' AND header = '$header'");
                        if(
                        $out mysql_fetch_array($sql))
                        {
                        $presseid $out["id"];
                        }
                        /*Eintragen in die Datenbank*/

                        /*Datei Upload */

                        $ziel "images/presse/";

                        /*getimagesize*/
                        $getimagesize getimagesize($bild);
                        $h $getimagesize[0];
                        $b $getimagesize[1];
                        $t $getimagesize[2];

                        if(
                        $t == 1)
                        {
                        $end ".gif";
                        }
                        if(
                        $t == 2)
                        {
                        $end ".jpg";
                        }
                        if(
                        $t == 3)
                        {
                        $end ".png";
                        }

                        $ziel .= $presseid .$end;
                        /*getimagesize ENDE*/

                        move_uploaded_file($bild$ziel);



                        $bn "600";
                        if(
                        $b >= $bn)
                        {
                        $v $b $h;
                        $hn round($bn $v);

                        $im ImageCreate ($bn$hn);

                        if(
                        $t == 1)
                        {
                        Imagegif ($im);
                        }
                        if(
                        $t == 2)
                        {
                        Imagejpeg ($im);
                        }
                        if(
                        $t == 3)
                        {
                        ImagePNG ($im);
                        }


                        }
                        else
                        {
                        $hn $h;
                        }



                        //wenn kein error ENDE

                        if($error == 1)
                        {
                        $sql "DELETE FROM presse WHERE id = '$presseid' LIMIT 1";
                        mysql_query($sql);

                        unlink($ziel);
                        unlink($bild);
                        }

                        $imgtag "width=\"".$bn."\" height=\"".$hn."\"";

                        $sql "UPDATE presse SET bild = '$ziel', imgtag = '$imgtag' WHERE id = '$presseid' LIMIT 1";
                        mysql_query($sql);

                        unlink($bild);


                        } else {
                        echo(
                        "<BR>Die Datei wurde nicht hochgeladen. Vorgang abgebrochen, da keine
                        Datei angegeben wurde!"
                        );

                        Kommentar


                        • #13
                          Original geschrieben von Sihtam
                          ich denke ich mache da wieder was falsch!!!
                          ja! du liest nicht im manual nach

                          schau dir mal gaaaaanz scharf die parameter für imageJpeg & co an.
                          Kissolino.com

                          Kommentar


                          • #14

                            Kommentar


                            • #15
                              Original geschrieben von TobiaZ
                              das ist nicht witzig. das ist ein verbrechen....
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X