Bildverarbeitung ohne Performance-Probleme: Laravel-Imagor

Sebastian Kurfürst27.09.2025

Bilder beschneiden, skalieren, optimieren – früher eine komplexe Angelegenheit in verschiedenen Anwendungen. Heute haben wir ein neues Open Source Paket veröffentlicht, das Laravel-Anwendungen mit dem modernen Image-Server Imagor verbindet.

Foto von Derick McKinney auf Unsplash Foto von Derick McKinney auf Unsplash

Das Problem: Bildverarbeitung kostet Performance

Wer kennt es nicht: Die erste Anfrage an eine Seite mit Bildergalerie dauert ewig. Der Grund? Die Anwendung muss alle Bilder on-the-fly verarbeiten, croppen und in verschiedenen Größen rendern - da wir nicht die 10 MB pro Bild, welche die Redaktion hochgeladen hat, direkt veröffentlichen wollen.

Früher haben wir – wie viele andere – auf integrierte Lösungen wie neos/media oder Laravel-Pakete mit GD/ImageMagick gesetzt. Diese lösen zwar das Problem der Bildverarbeitung, bringen aber einige Nachteile:

  • Langsame erste Requests: Alle Bildoperationen blockieren den Hauptrequest (dies wird bei neos/media umgangen, erhöht aber die Komplexität der Implementierung ungemein)
  • Aufgeblähte Docker Images: Zusätzliche Dependencies vergrößern Container und Attack Surface.
  • Komplexes Caching: Die verarbeiteten Bilder müssen zwischengespeichert werden, damit sie nicht bei jedem Aufruf erneut berechnet werden.
  • Framework-Lock-in: Bildbearbeitung funktioniert nur innerhalb des spezifischen Frameworks

Die Lösung: Image Processing Server

Image-Server wie imgproxy oder Imagor lösen das Problem elegant: Bildbearbeitung wird in einen separaten Service ausgelagert, der über HTTP-URLs angesteuert wird. Das bedeutet:

  • Asynchrone Verarbeitung: Bilder werden parallel und unabhängig vom Hauptrequest verarbeitet
  • Caching als Teil des Image Servers
  • Schlankere Anwendungen: Weniger Dependencies, kleinere Docker Images
  • Framework-unabhängig: Jede Anwendung kann den Service nutzen

Imagor ist dabei unser Favorit: Komplett Open Source ohne versteckte Enterprise-Features, in Go entwickelt für einfaches Deployment, aktiv maintained mit regelmäßigen Updates. Unter der Haube nutzt es libvips – eine Bildverarbeitungs-Library, die 4-8x schneller als ImageMagick arbeitet bei deutlich geringerem Speicherverbrauch.

Wir setzen Imagor bereits seit mehreren Jahren erfolgreich in Produktionsumgebungen ein.

Laravel-Integration fehlte

Laravel-Anwendungen hatten bisher keinen nativen Imagor-Support. Wir fanden zwar das qualitativ hochwertige Paket laravel-imgproxy, das eine ähnliche Lösung für imgproxy bereitstellte – aber eben für imgproxy, nicht für Imagor.

Da das Originalpaket eine sehr gute Codequalität, umfassende Tests und eine saubere Architektur mitbrachte, entschied ich mich für einen Fork und passte es für Imagor an.

Unser Beitrag: laravel-imagor

Das Ergebnis ist sandstorm/laravel-imagor – ein umfassendes Laravel-Paket für Imagor-Integration mit fluent API, sicheren signierten URLs und umfangreichen Bildbearbeitungsoptionen - natürlich Open Source :-) - Details zur Nutzung findet ihr im Projekt.

True Open Source

Unser Paket basiert komplett auf Open Source: dem Original laravel-imgproxy von Imam Susanto und natürlich Imagor von cshum. Deshalb haben wir beide Maintainer mit jeweils 100€ gesponsert.

Macht das auch! Open Source lebt von Unterstützung. Wenn ihr Libraries nutzt, die euch Arbeit abnehmen, zeigt Wertschätzung durch Sponsoring!

Links

Wir profitieren täglich von Open Source Libraries. Da ist es selbstverständlich, auch etwas zurückzugeben.