Mikey: Grafik verkleinern und neu speichern

Hi,
folgendes möchte ich machen:

Ein Bild beliebiger Größe wird mit Hilfe PHP auf eine bestimmte größe verkleinert und dann neu gespeichert.

Nun habe ich mir LibGD einmal angeschaut und nach einer Funktion gesucht mit der ich ein Bild verkleinern kann. Leider bin ich nicht fündig geworden. Ich habe lediglich eine Funktion gesehen mit der man ein Teil eines Bildes "resizen" kann.

Nun meine Frage:
Wie mache ich so was am besten? Mit LibGD oder geht das damit gar nicht?

Danke!

  1. Hi!

    Leider bin ich nicht fündig geworden.

    Doch bist du.

    Ich habe lediglich eine Funktion gesehen mit der man ein Teil eines Bildes "resizen" kann.

    Damit kannst du auch komplette Bilder verkleinern.
    imagecopyresampled() käme in Frage.
    imagecopyresized() wäre aber auch noch eine Möglichkeit.
    Die erste Funktion würde ich aber vorziehen.

    Am besten schaust du dir im PHP-Handbuch einfach mal das Kapitel über die Grafikfunktionen an und benutzt du Suchfunktion deines Browsers. Suche einfach mal nach "resize".
    Mit ziemlicher Sicherheit findest du was in den Kommentaren.
    Eventuell gibt es da auch für dich brauchbaren Code.
    (Auch bei den beiden von mir genannten Funktionen solltest du mal in die Kommentare schauen.)

    Wie mache ich so was am besten? Mit LibGD oder geht das damit gar nicht?

    Entweder setzt du die GD-Library ein, wenn dein Hoster diese auf dem Server installiert hat oder du arbeitest mit ImageMagick.
    Sollte dein Hoster ImageMagick auf dem Server haben, dann wäre es sehr einfach, damit Bilder zu verkleinern.
    Das ist ein Grafikprogramm, womit du wirklich eine ganze Menge anstellen kannst.
    Da es sich um ein Kommandozeilenprogramm handelt, kannst du mit PHP (oder anderen Sprachen) ganz einfach darauf zugreifen.
    Beispiele, wie man mit ImageMagick Bilder resizen kann
    Einige Hoster haben ImageMagick auf ihrem Server installiert.
    Falls nicht, könntest du deinen Hoster ja vielleicht mal nett drum bitten, es zu installieren.
    Dann gäbe es noch MagickWand For PHP. Das ist eine PHP-Erweiterung für ImageMagick.
    Klasse Sache, aber mir würde jetzt kein Hoster einfallen, der dies anbieten würde...

    Schöner Gruß,
    rob

  2. Das folgende Skript liefert ein jpeg-Bild (für andere Formate - etwa png - die entsprechenden GD-Funktionen verwenden) in 200 Pixel Breite an den Browser aus. Den Dateipfad des Bildes musst Du in der ersten Zuweisungszeile noch eintragen. Das Skript zeigt exemplarisch, wie dein Problem gelöst werden kann. Die Funktion imagejpeg kann auch in eine Datei schreiben (siehe PHP Handbuch). Dann ist die Ausgabe des Content-type natürlich nicht notwendig und auch nicht sinnvoll.

    <?php
      $bild = "Hier gültigen Dateipfad eintragen";
      $size = getimagesize($bild);
      $breite = $size[0];
      $hoehe = $size[1];

    $neueBreite = 200;
      $neueHoehe = intval($hoehe*$neueBreite/$breite);

    $altesBild = imagecreatefromjpeg($bild);
      $neuesBild = imagecreatetruecolor($neueBreite, $neueHoehe);
      imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $neueBreite, $neueHoehe, $breite, $hoehe);
      header("Content-type: image/jpeg");
      imagejpeg($neuesBild);
    ?>

    MfG
    GK