Thomas Schmieder: GD-Lib, wie kann man Thumbnail im File speichern?

Hallo,

was muss ich machen, um ein größeres Bild zu einem kleineren umzuwandeln und das dann in einer Datei zu speichern? Ich habe da nur die Funktion jpg2wbmp gefunden, will doch aber das Format nicht ändern.

Grüße

Tom

  1. Hallo,

    was muss ich machen, um ein größeres Bild zu einem kleineren umzuwandeln und das dann in einer Datei zu speichern? Ich habe da nur die Funktion jpg2wbmp gefunden, will doch aber das Format nicht ändern.

    hilft http://www.heise.de/ix/artikel/2002/05/078/ Dir weiter?

    Gruss
    Thomas

    1. Hi Thomas,

      danke für den Tipp. Der Link ist noch ganz interessant für das System, das wir Samstag zusammennageln wollen. Da dard die GD-Lib nicht fehlen.

      Bezüglich der Speicherung habe ich es inziwschen gefunden und eine kleine Funktion erstellt, die ich dann auch zur Diskussion stelle.

      function makethumb($picname,$thumbname,$thumbwidth)
      {
        ### hier müssen noch die anderen unterstützten Formate
        ### eingebaut werden.

      $imgdata=getimagesize($picname);         //fragen, ob es jpg ist
        if ($imgdata[2]==2)
        {
          $src_img=ImageCreatefromjpeg($picname);//Quellbild i Speicher auspacken

      $qx=imagesx($src_img);                 //Maße des Quellbides bestimmen
          $qy=imagesy($src_img);

      $tx=$thumbwidth;                       //Breite des Zielbildes feslegen
          $ty=($thumbwidth/$qx)*$qy;                     //Höhe des Zielbildes berechnen

      $dst_img=imagecreate($tx,$ty);         //Zielbild im Speicher vorbereiten

      //Zielbild erzeugen
          imagecopyresized($dst_img,$src_img,0,0,0,0,$tx,$ty,$qx,$qy);

      imagejpeg($dst_img,$thumbname);        //Zielbild speichern
          imagedestroy($src_img);                //Arbeitsspeicher für Arbeits-
          imagedestroy($dst_img);                //kopien der Bilder freigeben.
        }
        else
        {
          echo "kein JPEG-Format: $imgdata[2]<br>";
        }
      }

      Insbesondere würde mich interessieren, ob man die Werte, die getimagesize($picname) liefert gleich weiterverwenden darf oder ob man lieber nochmal mit imagesx($src_img) und imagesy($src_img) nachfragt, wie groß das Bild im Arbeitsspeicher dann ist.

      Außerdem wüßte ich gerne, ob man die GIF-Funktionalität irgendwie dazukaufen kann. Es wäre ja nichts dagegen einzuwenden, eine modereate Lizenzgebühr an Unisys (oder wie die heißen...) zu zahlen.

      Kann mir da jemand Tipps geben?

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
      1. Moin!

        Bei deiner Funktion willst du doch bestimmt lieber imagecopyresampled() verwenden. Ist nämlich qualitativ wesentlich besser.

        Insbesondere würde mich interessieren, ob man die Werte, die getimagesize($picname) liefert gleich weiterverwenden darf oder ob man lieber nochmal mit imagesx($src_img) und imagesy($src_img) nachfragt, wie groß das Bild im Arbeitsspeicher dann ist.

        Ich wüßte nicht, was dagegen spricht. Die Quelle der Werte ist identisch: Das Bild.

        Außerdem wüßte ich gerne, ob man die GIF-Funktionalität irgendwie dazukaufen kann. Es wäre ja nichts dagegen einzuwenden, eine modereate Lizenzgebühr an Unisys (oder wie die heißen...) zu zahlen.

        Als universelles Skript-Bildbearbeitungsprogramm solltest du für deine Zwecke lieber ImageMagick einsetzen. Das kann auch GIFs verarbeiten und produziert angeblich noch schönere Ergebnisse.

        Läßt sich von PHP auch prima als externes Programm aufrufen.

        - Sven Rautenberg

        --
        "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)