Bilder im Hintergrund in WebP und AVIF konvertieren
Sie können unser Plugin über den Shopware Store beziehen:
https://store.shopware.com/de/memod97197147652m/bilder-im-hintergrund-in-webp-und-avif-konvertieren.html
Systemanforderungen
Prozessoren
Im Plugin gibt es 2 Prozessoren für die Bilder.
1. GD:
Wenn GD im Einsatz ist kann es sein, dass AVIF nicht unterstützt wird.
Wir verwenden imageavif dafür.
https://www.php.net/manual/de/function.imageavif.php
Das müsste ab PHP 8.1 verfügbar sein, wenn libavif auf dem System vorhanden ist.
2. Imagick (Wird von uns bevorzugt):
Imagick hat in der Version 6 und jünger noch ein Problem mit AVIF Bildern mit transparenz.
Ab Imagick 7 geht das aber wie gewünscht.
Unter Imagick 6 ignorieren wir einfach transparente Bilder bei der Konvertierung.
Erste Installation
- Plugin installieren und aktivieren
- Plugin nach Wunsch konfigurieren (Verlustfrei / Qualität, siehe Dokumentation unten)
- Empfehlung: Alle WebP initial manuell auf der Konsole generieren (./bin/console memo:webp:generate)
Einstellungen
Maximale Anzahl an generierten Bilder pro Stunde
Definiert wieviele Bilder durch den Taskrunner pro Stunde generiert werden können, um das System nicht zu überlasten.
Wenn der CLI Befehl verwendet wird, wir diese Einstellung ignoriert.
Ohne Verlust komprimieren
Da haben wir die Erfahrung gemacht, dass die Bilder teils am Ende noch grösser sind als z.B. unter JPG.
Das hat damit zu tun, dass AVIF und WebP sehr stark in der Komprimierung sind, aber nicht für den lossless Bereich gedacht sind.
Verwendung von GD erzwingen
Falls vorhanden verwendet unser Plugin immer Imagick.
Als Fallback verwenden wir GD. Mittels dieser Einstellung wird diese Logik übersprungen und immer GD verwendet.
Speicher Limit für Imagick in MB
Hier kann das RAM Limit definiert werden.
Wir haben die Erfahrung gemacht, dass einige Hoster sehr aggressive Taskkiller im Einsatz haben.
Dadurch kann der RAM Verbrauch niedrig gehalten werden, was den Taskkiller davon abhält unsere Bildergenerierung zu killen.
Kompressionsqualität WebP / AVIF:
Zahl zwischen 1 und 100.
100 wäre dann lossless.
Wir empfehlen für WebP 50 und für Avif 20.
Das kommt aber ganz auf die Bilder im Shop an
MancheEinige Shops brauchenprofitieren von höhere Auflösungen.
In dem Fall würde sich 80 und 40 als Einstellung anbieten.
Geschwindigkeit der AVIF Komprimierung:
Zahl zwischen 0 und 10.
AVIF kann das gleiche Bilder unterschiedlich stark komprimieren.
Umso höher die Zahl ist umso schneller wird die Konvertierung abgeschlossen, dafür ist die resultierende Dateigrösse allerdings auch grösser.
Das kommt ganz auf die Anzahl Bilder im Shop und auf die Leistung des Servers an.
2 ist eine recht aggressive Einstellung um eine guten Komprimierung zu erreichen.
Pfad für temporäre Dateien für Imagick:
Imagick legt während der Komprimierung temporäre Dateien in den /tmp Ordner.
Das ist meistens kein Problem. Uns ist allerdings auf ein paar Hostings aufgefallen, dass die tmp Partition vollgelaufen ist, weil Imagick Dateien angelegt hat und dann der Task von einem Taskkiller abgeschossen wurde.
Dadurch wurden die Temporären Dateien nie bereinigt.
Wenn hier ein absoluter Pfad gesetzt wird, dann speichert Imagick die Dateien dort rein.
Dadurch kann das Problem umgangen werden.
Konsolen Befehle
Mit dem Befehl bin/console memo:webp:generate
können die Bilder sofort und ohne Scheduled Task erstellt werden.
Es gibt auch die Option async also bin/console memo:webp:generate -a
um die Bilder über die Message Queue zu verarbeiten.
Die Bilder werden nicht jedes mal komplett neu konvertiert, das System erkennt, ob Bilder bereits konvertiert wurden und überspringt diese.
Bei diesem Befehl werden die Bilder synchron abgearbeitet.
Die bestehenden Ordner werden verglichen und fehlende Dateien werden
Mögliche Probleme
WebP Bilder werden nicht ausgegeben
Hier gibt es mehrere Auslöser. Zuerst kann geprüft werden, ob im Frontend bei den Bildern ein Picture Tag ausgegeben wird.
Falls der Picture Tag nicht ausgegeben wird ist es möglich, dass das eingesetzte Theme oder ein Plugin die folgende Datei überschreibt:Resources/views/storefront/utilities/thumbnail.html.twig
Bitte prüfen Sie die installierten Plugins und, falls dies der Fall ist, übernehmen Sie die Anpassungen unseres Plugins in Ihr Theme.
Für Bilder mit Transparenz werden keine AVIF Dateien generiert
Imagick unterstützt AVIF mit Transparenz erst ab der Version 7.
Sollte das Plugin eine jüngere Version erkennen prüft unser Plugin zuerst, ob das Bild eine transparente Ebene besitzt.
Falls ja wird dieses Bild bei der Konvertierung übersprungen.
Welche Imagick Version Sie verwenden finden Sie ganz einfach auf Ihrem Server mit folgendem Befehl heraus:php -r "print_r(\\Imagick::getVersion()['versionString']);"
Logs
Das Plugin logt Fehler beim Konvertieren in das reguläre Logfile unter var/logs/...