bitverliebt/contao-image-resize

Automatically resizes oversized images when they are uploaded via the Contao back end file manager.

Maintainers

Package info

github.com/bitverliebt/contao-image-resize

Type:contao-bundle

pkg:composer/bitverliebt/contao-image-resize

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.2 2026-06-24 12:50 UTC

This package is auto-updated.

Last update: 2026-06-24 12:50:52 UTC


README

Verkleinert Bilder automatisch, sobald sie über die Contao-Dateiverwaltung (Backend) hochgeladen werden und ein konfiguriertes Maximum überschreiten. Löst das Problem, dass Kamera- bzw. Handyfotos mit z. B. 4331×6496 Pixel beim späteren Generieren von Bildgrößen Speicher- oder Verarbeitungsfehler verursachen.

Funktionsweise

  • Hängt sich über den offiziellen postUpload-Hook in den Backend-Upload ein.
  • Liest die Abmessungen des hochgeladenen Bildes aus.
  • Ist es größer als max_width / max_height, wird es proportional verkleinert (Modus „box", kein Beschneiden) und überschreibt die Originaldatei.
  • Die eigentliche Bildverarbeitung übernimmt die Contao-Image-Factory. Dadurch wird automatisch die in der Installation verfügbare bzw. konfigurierte Imagine-Engine verwendet – Gmagick, Imagick oder GD, in genau der Reihenfolge, die Contao selbst nutzt. Metadaten- und Farbprofil-Behandlung sowie EXIF-Orientierung laufen damit konsistent zum restlichen Bildsystem.
  • SVG wird absichtlich nicht verändert (Vektorformat). GIF wird von der Contao-Engine animationssicher behandelt.
  • Optional: Ist ein Bild kleiner als min_width / min_height, wird nur eine Logmeldung geschrieben (keine automatische Vergrößerung, da das die Bildqualität verschlechtern würde).

Installation

composer require bitverliebt/contao-image-resize

Danach im Contao Manager bzw. per Konsole den Cache leeren:

php vendor/bin/contao-console cache:clear --env=prod --no-warmup
php vendor/bin/contao-console cache:warmup --env=prod

Konfiguration

Standardmäßig wird auf 2500×2500 Pixel begrenzt. Eigene Werte in config/config.yaml der Hauptanwendung setzen:

contao_image_resize:
    max_width: 3000
    max_height: 3000
    min_width: 0      # 0 = deaktiviert
    min_height: 0     # 0 = deaktiviert
    jpeg_quality: 85

jpeg_quality wird für JPEG und WebP als Qualitätswert (1–100) an die Imagine-Engine durchgereicht.

Hinweise für den produktiven Einsatz

  • Das Verkleinern selbst braucht beim Hochladen kurzzeitig Speicher in der Größenordnung des Originalbildes. Ein memory_limit von mindestens 256–512M wird empfohlen, damit auch sehr große Kamerafotos (20+ Megapixel) beim Upload sicher verarbeitet werden. Danach liegt nur noch die kleine Version auf dem Server – die laufende Bildverarbeitung (Thumbnails, Bildgrößen) ist davon nicht mehr betroffen. Ist Imagick/Gmagick installiert, wird der Upload speicher- und qualitätsschonender verarbeitet als mit reinem GD.
    • Wichtig: Das memory_limit des PHP-FPM-/Web-Kontexts ist relevant, nicht das der CLI – beide können sich unterscheiden (php -i auf der Konsole zeigt ggf. einen anderen Wert als das, was beim Backend-Upload tatsächlich gilt). Am sichersten lässt sich der reale Wert über eine kurze PHP-Datei im Webroot mit ini_get('memory_limit') prüfen, oder direkt im Hoster-Account ändern, falls dort eine PHP-Konfiguration pro Domain möglich ist.
    • Ist das Limit zu niedrig, bricht PHP mit einem nicht abfangbaren Fatal Error ab – je nach Server-Konfiguration (log_errors) landet das in keinem Log. Die Erweiterung schätzt den Speicherbedarf daher vor dem Verkleinern grob ab und schreibt bei absehbarem Speichermangel einen Fehler ins Contao-Systemprotokoll, statt den Prozess unkontrolliert abstürzen zu lassen.
  • Wirkt nur auf neue Uploads über die Backend-Dateiverwaltung, nicht rückwirkend auf bereits vorhandene Dateien.
  • Getestet für Contao 5.3+ / PHP 8.1+.