Ankündigung

Einklappen
Keine Ankündigung bisher.

Imagefunktionen: Problem bei GIFs

Einklappen

Neue Werbung 2019

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

  • Imagefunktionen: Problem bei GIFs

    Grüß euch!

    Kurze Funktionsbeschreibung: Es wird ein Bild hochgeladen, gespeichert ("big_bild1.jpg") und anschließend noch verkleinert und wieder gespeichert ("bild1.jpg").

    Vorerst aber am besten mal ein "Code-Ausschnitt":
    PHP-Code:
    //[...]

    //erstmal schau ich, welcher Dateityp vorliegt; das funktioniert auch
    if ($img_type == "jpg" or $img_type == "jpeg") {
    $im imagecreatefromjpeg("../galerie/aktivitaten/big_".$bild);
    }

    elseif (
    $img_type == "gif") {
    $im imagecreatefromgif("../galerie/aktivitaten/big_".$bild);
    }

    //[...]
    //weiter geht's damit, dass ich die neuen bildgrößen festlege:
    // $x und $y sind die neuen, kleineren Größen
    // $img_x und $img_y die Maße des großen Bildes, das hochgeladen wurde

    //so, und hier nun die Bilderstellung:
    $neu imagecreatetruecolor($x,$y);
    imagecopyresized($neu$im0000$x$y$img_x$img_y);
    imagejpeg($neu"../galerie/aktivitaten/".$bild70);
    imagedestroy($im); 
    Das ganze funktioniert für .jpg-Datein problemlos. Allerdings bei .gif-Datein bekomm ich zwar das kleine Bild erstellt, allerdings ohne Inhalt und mit einer Größe von 0 Bytes.
    Wo kann da das Problem liegen? Liegt es daran, dass ich zuerst ein .gif habe, und dann aber per imagejpeg() ein .jpg erstelle?

    Grüße, Rocco

  • #2
    Hi,

    in deinem Code steht folgendes:
    PHP-Code:
    magecreatefromgif("../galerie/aktivitaten/big_".$bild); 
    Fehlt da nicht ein "i" vor magecreatefromgif?

    Gruß
    cowabunga

    Kommentar


    • #3
      Jetzt hab' ich mich schon gefreut dass das jemand bemerkt hat, aber das dürfte bei rüberkopieren passiert sein
      Also daran liegts nicht; ich habs oben ausgebessert....

      Grüße

      Kommentar


      • #4
        Kopier bitte das gesamte Script ohne Kopierfehler und mit Debugausgaben - var_dump() - aller Variablen, die als Parameter an die Grafikfunktionen übergeben werden, Rückgabewerte ebenso.
        Inklusive file_exists() auf Pfadangaben von vermeintlichen Dateien.

        Beispiel:
        PHP-Code:
        <?php
        $im 
        imagecreatefromgif("../galerie/aktivitaten/big_".$bild); 
        var_dump(__LINE__"../galerie/aktivitaten/big_".$bildfile_exists("../galerie/aktivitaten/big_".$bild), $im);
        ?>

        Kommentar


        • #5
          Gerne!

          Hier mal das komplette Skript:

          PHP-Code:
          $bild $_FILES['bild_neu']['name'];
          move_uploaded_file($_FILES['bild_neu']['tmp_name'],"../galerie/aktivitaten/big_".$bild);
              
          #größe bearbeiten
          $f explode(".",$bild);    #dateityp ermitteln
          $img_type $f[1];
                  
          if (
          $img_type == "jpg" or $img_type == "jpeg") {
          $im imagecreatefromjpeg("../galerie/aktivitaten/big_".$bild);
          }

          elseif (
          $img_type == "gif") {
          $im imagecreatefromgif("../galerie/aktivitaten/big_".$bild);
          }

          elseif (
          $img_type == "png") {
          $im imagecreatefrompng("../galerie/aktivitaten/big_".$bild);
          }

          else {
          unlink("../galerie/aktivitaten/big_".$bild);
          die(
          "Dateityp unbekannt; Vorgang abgebrochen! Nur JPG/JPEG, GIF, PNG erlaubt. M&ouml;glicherwei&szlig;e ein Punkt im Dateinamen.");
          }

          $img_x imagesx($im);
          $img_y imagesy($im);

          if (
          $img_x $img_y) {
          $x 72;
          $y = ($x*$img_y)/$img_x;
          }

          if (
          $img_x $img_y) {
          $y=72;
          $x=($y*$img_x)/$img_y;
          }

          $neuer_name $f[0].".jpg"#Neuer Dateiname, da der alte möglicherw. auf .gif/.png geendet hat und wir aber ein .jpg generieren.

          $neu imagecreatetruecolor($x,$y); #leeres true-color-bild erstellen
          imagecopyresized($neu$im0000$x$y$img_x$img_y); #auf das leere bild, das echte bild drauf-skalieren
          if (imagejpeg($neu"../galerie/aktivitaten/".$neuer_name70)); # bild erstellen und temp. bild löschen unlink("../galerie/aktivitaten/big_".$bild)
          imagedestroy($im); 
          in Zeile 37 hab ich etwas verändert (das mit der Dateiendung), allerdings das selbe Problem, nur dass ich diesmal eine .jpg-Datei ohne Inhalt erhalte.

          Und das mit var_dump folgt sofort....

          ...und hier ist es:
          int(33) string(39) "../galerie/aktivitaten/big_j0398547.gif" bool(true) resource(7) of type (gd) int(60) string(35)
          ...und das vom "leeren" Bild:
          "../galerie/aktivitaten/j0398547.jpg" bool(true) resource(7) of type (gd)
          Vielen Dank, Grüße

          PS: Möchte nochmal darauf hinweisen, dass es mit .jpg-Dateien funktioniert...

          Kommentar


          • #6
            ...soeben getestet: auch mit .png's gibt's das selbe Problem

            ojeoje.... was hab ich blos getan
            jetzt funktionierts mit .jpg's auch nimmer.... ich glaub ich krieg gleich die Krise

            Kommentar


            • #7
              Bitte lass dir auch die Rückgabewerte aller Funktionen ausgeben und teste, ob du auch wirklich in die entsprechenden Blöcke gelangst. So auf Anhieb sehe ich keine Fehler.
              Für was stehen in der var_dump() Ausgabe int(60) und string(35)?

              Kommentar


              • #8
                #größe bearbeiten
                $f = explode(".",$bild); #dateityp ermitteln
                $img_type = $f[1];
                Ist ja auch eine sehr windige Sache diese Methode.
                Benutze mal lieber die Werte, die dir $_FILES liefert und prüfe erstmal ob die Werte von Name, Größe etc.. hier richtig angekommen.
                Wenn hier schon ein Fehler ist, durchzieht sich das bis zum Scriptende.

                Kommentar


                • #9
                  Ich hatte es zuerst mit $_FILES gelöst. Hab diese Methode zur Vereinfachung zur Fehlerermittlung benutzt... Naja, geholfen hats nix ...und in die entsprechenden Blöcke gelang ich auch.
                  Folgendes ist mir aber aufgefallen: Komischerweise verliert er ab Zeile 24 (mein 2. Post) alle Variablen...
                  Ich werds einfach nochmal neu machen und mal schaun was dann passiert.

                  Danke vorerst und Grüße!

                  Kommentar


                  • #10
                    Das Denken könnt ihr für mich natürlich nicht übernehmen.... Wenn ich denke was ich für Zeit investiert hab (und eure auch ) für so einen Drecksfehler: Ich hatte ein quadratisches GIF, hab aber nur abgefragt, was passieren soll wenn x < bzw. > y ist. (Zeile 27-35) Aber nicht was passiert wenn x = y.
                    Und mein jpg, das ich am Anfang getestet hab war ein normales Foto-Format.

                    Dank euch trotzdem

                    Grüße

                    Kommentar


                    • #11
                      na super

                      Kommentar


                      • #12
                        oder um es mit der berühmten Pauschalsignatur von SvenLittkowski zu sagen:
                        Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen.

                        *an den Kopf faß*
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #13
                          Lass doch Sven aus dem Spiel LOL!
                          [FONT="Book Antiqua"][I]"Nobody is as smart as everybody" - Kevin Kelly[/I]
                          — The best things in life aren't things[/FONT]

                          Kommentar

                          Lädt...
                          X