Skip to main content

Einführung

Laravel stellt über die Image-Facade eine fluente API zur Bildbearbeitung bereit. Operationen wie Skalieren, Zuschneiden, Kodieren und Speichern lassen sich damit einheitlich innerhalb des Frameworks ausdrücken. Intern kommt Intervention Image zum Einsatz, das sowohl die PHP-Extension GD als auch Imagick unterstützt.
Bildverarbeitung kann sehr CPU- und speicherintensiv sein. Führen Sie umfangreiche Bildverarbeitung nicht während eines HTTP-Requests aus, sondern ziehen Sie eine Verarbeitung als Queue-Job in Betracht.
Diese Funktion steht ab Laravel v13.20.0 zur Verfügung. Wenn Sie eine ältere Version verwenden, aktualisieren Sie das Framework mit composer update auf die neueste Version.

Installation

Bevor Sie die Bildbearbeitungsfunktionen nutzen können, installieren Sie das Paket Intervention Image über Composer.
Stellen Sie außerdem sicher, dass die passende PHP-Extension (GD oder Imagick) für den gewünschten Treiber installiert ist.

Konfiguration

Die Konfigurationsdatei liegt unter config/image.php. Wenn sie noch nicht vorhanden ist, veröffentlichen Sie sie mit dem Artisan-Befehl.
Der Standardtreiber kann in der Konfigurationsdatei oder über die Umgebungsvariable IMAGE_DRIVER festgelegt werden. Unterstützte Treiber sind gd und imagick.

Bilder laden

Die Image-Facade bietet Methoden zum Erzeugen von Bildinstanzen aus verschiedenen Quellen. Der Inhalt eines Bildes wird verzögert geladen und daher erst dann tatsächlich gelesen, wenn eine Verarbeitung oder Bytes angefordert werden.

Hochgeladene Dateien

Um ein aus dem Request hochgeladenes Bild zu erhalten, verwenden Sie die Methode image. Falls die Datei nicht existiert, wird null zurückgegeben.
Zum Erzeugen aus einer UploadedFile-Instanz verwenden Sie die Methode fromUpload.
Eine aus einer hochgeladenen Datei erzeugte Bildinstanz stellt über die Methode file die ursprüngliche Datei bereit.

Dateien aus dem Storage

Um eine Bildinstanz aus einer auf einem Filesystem-Disk gespeicherten Datei zu erzeugen, verwenden Sie die Methode fromStorage. Das erste Argument ist der Dateipfad, das zweite der Disk-Name.
Sie können sie auch über die image-Methode der Storage-Facade erzeugen.

Weitere Quellen

Bildinstanzen können auch aus Byte-Strings, lokalen Pfaden, URLs oder Base64 erzeugt werden.

Bildbearbeitung

Bildinstanzen sind unveränderlich (immutable). Jede Methode fügt eine Transformation zur Verarbeitungspipeline hinzu und liefert eine neue Instanz zurück, sodass sich Methoden verketten lassen. Transformationen werden in der Reihenfolge angewendet, in der sie der Pipeline hinzugefügt wurden; das Kodieren erfolgt am Ende genau einmal.

Skalieren

Weitere Transformationen

Bedingte Transformationen

Bildinstanzen unterstützen den Conditionable-Trait, sodass sich mit when / unless bedingte Transformationen ausdrücken lassen.

Kodierung

Standardmäßig wird im ursprünglichen Format kodiert. Zum Konvertieren des Formats verwenden Sie die folgenden Methoden.
Mit der Methode quality können Sie die Ausgabequalität (1–100) festlegen.
Die Methode optimize ist ein Shortcut für Formatkonvertierung und Qualitätseinstellung. Voreinstellung sind WebP und Qualität 70.
Sie können die Ausgabe auch als Byte-String, Base64 oder Data URI erhalten.

Speichern

Mit der Methode store speichern Sie ein Bild auf einer Filesystem-Disk. Laravel generiert automatisch einen eindeutigen Dateinamen und gibt den Speicherpfad zurück.
Wenn Sie den Dateinamen selbst festlegen möchten, verwenden Sie storeAs.
Um mit der Sichtbarkeit public zu speichern, verwenden Sie storePublicly / storePubliclyAs.
Wenn das Speichern fehlschlägt, wird false zurückgegeben.

Bildinformationen abfragen

Mit den Methoden mimeType, extension, dimensions, width und height erhalten Sie Informationen zum Bild. Diese Methoden beziehen sich auf das bereits verarbeitete Bild (Beispiel: nach cover(400, 400) liefert width() den Wert 400).

Benutzerdefinierte Treiber

Der Image-Manager von Laravel erweitert Illuminate\Support\Manager. Über die Methode extend lassen sich eigene Treiber registrieren. Ein benutzerdefinierter Treiber implementiert das Interface Illuminate\Contracts\Image\Driver und erhält in der Methode process die ursprünglichen Bild-Bytes sowie die Pipeline und gibt die verarbeiteten Bild-Bytes zurück.
Registriert wird der Treiber in der boot-Methode eines Service Providers.
Um für ein bestimmtes Bild einen anderen Treiber zu wählen, verwenden Sie die Methode using.

Benutzerdefinierte Transformationen

Über eine Klasse, die das Interface Illuminate\Contracts\Image\Transformation implementiert, können Sie eigene Transformationen definieren.
Den Handler registrieren Sie in der boot-Methode eines Service Providers.
Nach der Registrierung wenden Sie die Transformation über die Methode transform an.
Zuletzt geändert am 2. August 2026