Verringerung der Größe der Benutzer Avatare? - Erstellung von Thumbnails
-
18-09-2019 - |
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?
Lösung
Abhängig von Ihrer Installation / Server-Setup, haben Sie mehrere Möglichkeiten.
- könnten Sie verwenden den GD-Bibliothek , und so etwas wie seine
imagecopyresized
Funktion - Oder Sie könnten die
Imagick extension
, und so etwas wie seinethumbnailImage
Methode.
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!