MagickImages

Aus Contao Community Documentation

betrifft
Contao Version ab 2.9
Extensions MagickImages

MagickImages bring ImageMagick Support nach Contao.

Standardmäßig verwendet Contao die GD2 Library, diese ist schnell in der Verarbeitung, bringt aber vor allem beim Verkleinern großer Bilder oft nur schlechte Ergebnisse. Deshalb ist es unter Umständen eine Option ImageMagick anstelle von GD2 zu verwenden.

Vorwort

Nachteile von ImageMagick

  • ImageMagick ist langsamer als GD2
  • MagickImages benötigt entweder
    • die Imagick PHP Library (PECL Paket)
    • oder es muss möglich sein mittels proc_open, exec oder shell_exec externe Programme auszuführen.

Vorteile von ImageMagick

  • Die Qualität ist (teils deutlich) besser
  • Größere Bilder (> 3000px x 3000px) sind für ImageMagick kein Problem

Warum also ImageMagick?

Der Geschwindigkeitsvorteil von GD2 macht sich erst bei größeren Bildern (>~ 1000px x 1000px) effektiv bemerkbar. Der qualitative Vorteil kann sich aber bereits bei kleinen Bildern deutlich bemerkbar machen. Wird beispielsweise ein 120x120 großes Bild auf 100x100 verkleinert, wirkt es bei GD2 unscharf. Wird ImageMagick mit seinem unsharp Feature eingesetzt, macht sich die Verkleinerung nahezu nicht bemerkbar.

MagickImages verwenden

Duale Implementierung

Imagick PHP Library

Die Imagick PHP Library ist ein PECL Paket, dass selbst bei Shared-Hostern immer mehr verfügbar ist. Der Grund ist einfach, mit der Imagick Library haben die Kunden Zugriff auf ImageMagick ohne dass das Ausführen externer Programme erlaubt sein muss.

Prozess Aufruf

Die klassische Alternative ist es, den convert Befehl von ImageMagick als externes Programm aufzurufen. Hierzu gibt es 3 Methoden:

  • proc_open (in den Einstellungen nur als proc benannt!) - Aufrufe mit proc_open lassen sich am besten kontrollieren und der Programmablauf überwachen. Programmabbrüche lassen sich garantiert erkennen.
  • exec - Der Klassiker exec wird gern verwendet, kann aber nur bedingt Fehlermeldungen abgreifen. Im schlimmsten Fall erscheint die Fehlermeldung innerhalb der Website und der Programmabbruch lässt sich überhaupt nicht erkennen.
  • shell_exec - Hier gilt das gleiche wie bei exec, außer das Fehlermeldungen innerhalb der Website vermieden werden können, ist aber langsamer in der Initialisierung als exec.

proc_open und exec tun sich in der Ausführungs- und Verarbeitungsgeschwindigkeit nahezu überhaupt nichts, daher ist die Empfehlung auch proc_open zu verwenden, wenn möglich. shell_exec führt das eigentlich Programm, also in diesem Fall convert in einer Shell z.B. bash aus, da hier ein zusätzliches Programm gestartet wird, ist dieser Aufruf langsamer.

Installation

MagickImages lässt sich über das Extension Repository installieren.

Konfiguration

MagickImages sollte sich von selbst auf die vorhandene Möglichkeiten einrichten. Wenn Imagick verfügbar ist, wird Imagick genutzt, ansonsten wird der externe Prozessaufruf verwendet.

Einrichten lässt sich MagickImages über die Systemeinstellungen.

Magickimages settings.png

Externer Prozessaufruf

Magickimages proc.png

Blur

Für Details bitte die ImageMagick Dokumentation lesen.

Magickimages blur.png

Unsharp

Für Details bitte die ImageMagick Dokumentation lesen.

Magickimages unsharp.png

Troubleshooting

Was tun wenn es nicht funktioniert?

Zuerst einmal sei gesagt, wenn MagickImages erkennt, dass ImageMagick nicht korrekt ausgeführt wurde (nur als externer Programmaufruf), dann wird als Fallback auf GD2 zurück gegriffen. Eine entsprechende Fehlermeldung wird im Systemlog generiert, dort ist die Anlaufstelle um zu prüfen was passiert ist.

Ansichten
Meine Werkzeuge

Contao Community Documentation

Ich brauch nen Bier, es ist zwar noch nicht nach 4, aber es ist nach Oli.

Yanick Witschi
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge