Tobias Scheible Cyber Security & IT-Forensik Dozent
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/wp-content/uploads/";
    $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. 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.

Kommentare

Es wurde noch kein Kommentar abgegeben.

Schreibe einen Kommentar!

Hilfe zum Kommentieren

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen oder eine Gefährdung anderer Besucher darstellen, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und sie haben die Möglichkeit, ein Avatar-Bild zu verwenden. Dazu müssen Sie mit Ihrer E-Mail Adresse bei Gravatar angemeldet sein. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzerklärung des Blogs.