Tobias ScheibleCybercrime Dozent & Live Hacking Speaker
Fotos, Bilder und Abbildungen

WebP in WordPress nutzen

WebP ist ein noch junges Grafikformat, hat aber das Potential, etablierte Formate zu ersetzen. PHP bietet bereit schon seit Längerem eine Funktion, um Bilder im WebP-Format zu erstellen. Und mit einer Funktion kann es sehr einfach in WordPress genutzt werden.

Samstag, 07. September 2019
0 Kommentare

WebP ist ein neues Bildformat, das eine verlustfreie und verlustbehaftete Kompression für Bilder bietet. Es wurde primär für den Einsatz auf Websites entwickelt. Die verlustbehaftete WebP-Komprimierung verwendet eine prädiktive Kodierung, die gleiche Methode, die auch der VP8-Videocodec verwendet. Diese Methode verwendet die Werte einzelner Pixelblöcke, um die Werte eines folgenden Blockes vorherzusagen und speichert dann nur die Differenz. Die verlustfreie WebP-Kompression verwendet vorhergehende Bildfragmente, um gleiche Bereiche exakt zu rekonstruieren. Diese Art unterstützt auch eine Transparenz (auch Alpha-Kanal genannt) wie PNG-Dateien.

PHP-Funktion imagewebp()

PHP 5.4

In PHP wurde mit der Version 5.4, die am 1. März 2012 veröffentlicht wurde, die Funktion imagewebp() hinzugefügt. Sie funktioniert analog zu der bereits sehr häufig verwendeten Funktion imagejpeg().

Als erster Übergabeparameter wird eine Bild-Ressource benötigt und der zweite Parameter gibt den Dateienamen der WebP-Datei an. Als dritter Parameter kann noch eine Kompressionsrate zwischen 0 und 100 angegeben werden, der Standardwert beträgt 80.

imagewebp($img, 'output.webp');

Beliebigen Dateityp umwandeln

Sollen verschiedene Eingangsformate umgewandelt werden, können die PHP-Funktionen file_get_contents() und imagecreatefromstring() verwendet werden. Mit file_get_contents() wird eine Datei eingelesen und der Inhalt als String zurückgegeben. Anschließend wird mit der Funktion imagecreatefromstring() aus dem String eine Bild-Ressource erstellt. Sie kann die Dateiformate JPEG, PNG, GIF, BMP, WBMP, and GD2 verarbeiten. Die Rückgabe wird an die imagewebp() Funktion übergeben und ein Dateiname für die Ausgabe definiert. Eine komplette WebP-Konvertierung sieht wie folgt aus:

imagewebp(imagecreatefromstring(file_get_contents('input.jpg')), 'output.webp');

WebP in WordPress

Für WordPress stehen viele verschiedene Plugins für die Unterstützung von WebP zur Verfügung. Soll nur das Beitragsbild automatisch in das WebP-Format umgewandelt werden, kann dies direkt in der functions.php realisiert werden.

functions.php

Dazu kann der nachfolgende Code verwendet werden. Es muss nur noch die erste Variable $path angepasst werden. Hier muss der absolute Pfad zum Upload-Verzeichnis eingetragen werden. Die Funktion imageToWebp() wird mit add_action() bei WordPress registriert. In diesem Fall wird die Funktion ausgeführt, sobald ein Post veröffentlicht wird.

function imageToWebp($post_id){ $path = "/var/www/data/up/"; $images = array (); $post_thumbnail_id = get_post_thumbnail_id($post_id); $images[] = $path.wp_get_attachment_metadata($post_thumbnail_id)[file]; foreach (wp_get_attachment_metadata($post_thumbnail_id)[sizes] as $key => $value){ $images[] = $path.substr(wp_get_attachment_metadata($post_thumbnail_id)[file], 0, 8).wp_get_attachment_metadata($post_thumbnail_id)[sizes][$key][file]; } foreach($images as $image) { if(!file_exists($image.'.webp')){ imagewebp(imagecreatefromstring(file_get_contents($image)), $image.'.webp'); } }
}
add_action('publish_post','imageToWebp');

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog und in meinem Fachbuch. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.