gumlet/php-image-resize - Bilder in PHP verkleinern und beschneiden

In einem Nebenprojekt habe ich einen Drag'n Drop Upload eingebaut. Anwender können beim Verfassen eines Einsatzberichts Fotos direkt im Editor hochladen. Als Schwierigkeit stellten sich dabei die unterschiedlichen Fotogrößen heraus. Wenn das eine Foto 640px400 Pixel groß ist, so kann das nächste 1200x800 Pixel groß sein. Das Problem kommt vor allem in der Ausgabe zum Vorschein, die Fotos können in der Ansicht nicht gleichmäßig angeordnet werden.

Als finale Lösung habe ich mich dazu entschieden jedes Foto beim hochladen zu duplizieren und eine Vorschau daraus zu generieren, die immer die gleichen Proportionen besitzen. Hierfür verwendet ich die PHP Library gumlet/php-image-resize.

PHP Image Resize

Die Open Source Library bietet viele nützliche Funktionen zur Bildmanipulation an. So kann ein Foto verkleinern, zugeschnitten, als base64 en-/dekodiert, gedreht oder die Qualtität skaliert werden.

use GumletImageResize;

$image = new ImageResize('image.jpg');
$image->resizeToHeight(250);
$image->save('image_small.jpg');

Sehr nützlich finde ich die Verkettung von Methoden. Damit kann ein Foto mehrfach in einem Aufruf bearbeitet werden:

$image = new ImageResize('image.jpg');
$image
    ->scale(50)
    ->save('image2.jpg')

    ->resizeToWidth(300)
    ->save('image3.jpg')

    ->crop(100, 100)
    ->save('image4.jpg');

Leave a Reply