Die Optimierung der Bildkonvertierung ist eine weit verbreitete Herausforderung von globalen Medien- und Nachrichtenunternehmen. In den letzten Wochen haben wir an einem Anwendungsfall eines solchen Unternehmens gearbeitet. Eine zentrale Funktion der Nuxeo Content Services Platform sollte das Importieren von bis zu 15.000 hochauflösenden jpeg-Bildern pro Stunde einschließlich Indexierung und Umwandlung in Beinahe-Echtzeit sein, damit Assets praktisch direkt nach ihrer Erfassung abrufbar und per Vorschau verfügbar waren. Es gab keinen Zweifel daran, dass die Nuxeo Platform dies bewältigen konnte (dank ihrer außerordentlich skalierbaren Architektur), die Frage lautete vielmehr, wie dies mit der geringstmöglichen Infrastruktur erreicht werden konnte.
Die Nuxeo Platform integriert für Bildkonvertierungen Imagemagick, ein unglaublich vielseitiges Tool für Bildumwandlungen. Wir konzentrieren uns hier auf das Ändern der Größe. Sobald ein Bild auf die Plattform hochgeladen wird, werden mehrere Umwandlungen durchgeführt, um verschiedene Auflösungen des Originals zu erhalten: Miniaturansicht, Vorschau usw. Der standardmäßige IM-Befehl, der von der Plattform verwendet wird, ist sehr allgemein und funktioniert daher in praktisch jeder Situation. Wir empfehlen, zunächst mit der Plattform zu beginnen. Sobald Sie jedoch mit der Plattform vertraut sind, können Sie diese für Ihren spezifischen Anwendungsfall optimieren.
Den Standardkonverter zu überschreiben ist genauso einfach, wie ihn in Nuxeo Studio neu zu definieren. Nachfolgend finden Sie einen Befehl, der die CPU weniger beansprucht als der Standardbefehl:
`
`
Wir haben sowohl den Standard- als auch den optimierten Konverter auf einer c3.xlarge (4 CPUs/8 GB RAM) Instanz von AWS unter Verwendung eines Satzes mit 150 Bildern mit einer durchschnittlichen Größe von 5 MB bei einer Auflösung von 18 MP getestet. Hier ist das Ergebnis: Standardkonverter im Vergleich zum optimierten JPEG-Größenkonverter
Bereits mit wenigen Konfigurationszeilen konnten wir eine unglaubliche Steigerung bei der Bildverarbeitung um 100 % erreichen. Es wird jedoch noch besser. Imagemagick bietet viele verschiedene Algorithmen zur Größenänderung von Bildern. Wir möchten uns drei davon ansehen, vom schnellsten zum langsamsten: sample, scale, und resize.
Algorithmusvergleich zur Größenänderung
Die oben abgebildeten Werte zeigen, dass sich die Menge der Bildverarbeitung verdoppelt, sobald man von resize auf scale wechselt, und diese sich bei sample noch weiter erhöht. Dies ergibt jedoch nur dann Sinn, wenn die Qualität der Ausgabebilder so gut ist, dass sie verwendbar sind.
Die Qualität bei sample ist erkennbar schlechter. Auf der anderen Seite fällt es schwer, einen Unterschied zwischen scale und resize zu erkennen. Dies ist hervorragend, da wir kostenlos die 4-fache Bildverarbeitungsmenge erhalten!
Zu guter Letzt können Sie die Menge der Bildverarbeitung weiter steigern, indem Sie Graphicsmagick anstelle von ImageMagick verwenden. Es ist nicht so vielseitig (keine Unterstützung von Photoshop-Dateien), ist dafür jedoch schneller bei jpeg-Bildern.
Letzten Endes kommt es auf den Anwendungsfall und die erforderlichen Umwandlungen an. Denken Sie daran, dass Sie für jede Umwandlung einen anderen Befehl verwenden können, wodurch Sie viele Möglichkeiten für weitere Verbesserungen haben.
Read more about Nuxeo on AWS in this whitepaper.