Frage

Benutzer von meiner Seite Hochladen von Bildern, die als Avatare verwendet werden. Ich habe eine Upload-Limit Größe von 2 MB festgelegt. An den meisten Orten benötige ich nur Thumbnails. Aber Benutzer laden Sie Bilder mit weit größeren Auflösungen. Ich speichere diese Dateien auf meinem Dateisystem.

Wie kann ich Thumbnails und speichert sie anstelle von großformatigen Dateien?

War es hilfreich?

Lösung

Abhängig von Ihrer Installation / Server-Setup, haben Sie mehrere Möglichkeiten.

Ich würde sagen, dass ich nie ganz ein Server ohne GD installiert gesehen - für Imagick, sein weniger wahrscheinlich, dass die standardmäßig installiert werden: - (


Eine andere Lösung könnte sein, die Befehlszeilenprogramm konvertieren (es kommt mit ImageMagick - unabhängig voneinander jeder PHP-Erweiterung) , mit so etwas wie exec nennen.

Vorteil, mit, dass wäre, dass Sie nicht durch memory_limit begrenzt werden, da das Ändern der Größe von einem externen Tool durchgeführt werden würde - aber natürlich, es bedeutet auch, dass Ihre Anwendung auf einem externen Tool verlassen wird, das ist nicht immer schön ...


Bei Bedarf gibt es viele Tutorials über GD; diejenigen, die Sie könnten zum Beispiel interessieren:

  • Wie Thumbnails mit PHP erstellen und gd : es wird ein Batch-Verfahren zu erzeugen Thumbnails für viele Bilder - was nützlich sein könnte, wenn Sie die Miniaturansicht für alle Bilder erzeugen müssen, die Sie bereits haben
  • Thumbnail Generation mit PHP Tutorial . nicht oft einige Dinge gesehen, wie quadratische Thumbnails erstellen, indem Sie das orignal Bild zentriert und einige Hintergrundfarben addieren

Andere Tipps

Sie können über den GD Modul oder die ImageMagick Modul keine Bilder hochgeladen, um die Größe und schrumpfen.

Wenn Sie Google um für so etwas wie „PHP-Image Resizer“, werden Sie viele Beispiele zu finden. Ich neige dazu, GD zu verwenden, da ich ein altes Stück Code haben kickt, die ganz gut funktioniert. Angenommen, Sie haben ein bekanntes uploaded JPEG-Bild auf $srcImgPath gefunden, könnten Sie so etwas wie die folgenden tun, wo $newWidth und $newHeight sind die neuen Größen von Bild, das Sie wollen:

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

funktionalisieren als angemessen und sicher sein, die $quality angeben. Sie können abstrakte dieser Code aus als auch sehr leicht GIFs und PNGs zu behandeln.

Überprüfen Sie die gd-Bibliothek aus, insbesondere die imagecopyresized Funktion

Nur eine kurze Notiz, wenn Sie den GD-Weg gehen, verwenden imagecopyresampled, wie es sauberen aussehende Bilder erzeugt. Damit meine ich es nicht so körnig aussehen und / oder pixely.

Link zur PHP-Handbuch auf der Funktion: http: // US2. php.net/manual/en/function.imagecopyresampled.php

Ich würde das timthumb.php Skript empfehlen. es ist felsenfest. http://www.darrenhoyt.com/2008/04 / 02 / TimThumb-php-Script-Freigabe /

Wenn Sie Imagick in Ihrem PHP-Setup installiert. Dann gibt es eine Funktion, die dies tut. Imagick :: thumbnailImage ()

Wenn Sie nicht Imagick haben, dann wird die GD-Bibliothek nützlich sein. Da sie imagcopyresized ()

Ist das nicht Google App Engine mit einer Untergruppe von PIL ausgestattet? Es ist die ‚Resize‘ Funktion, die nützlich sein könnte ... und am besten von allen, Sie sind ein freies Kontingent bekommen!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top