← All Articles A Product of Kinsa Creative

WebP Images

Creating WebP Images

Creating WebP Images Locally on an Apple computer running MacOS

Create webp images with the webp homebrew package.

Install via homebrew

$ brew install webp

Usage

$ cwebp [options] -q quality input.png -o output.webp 

For example

$ cwebp -q 30 portrait.jpg -o portrait.webp 

Dwebp can be used for PNG images

$ dwebp in_file [options] [-o out_file]

Creating WebP Images on the server

Python / Django

In a Python web application, WebP images can be created on the fly using the Python Image Library as demonstrated in this StackOverflow response. On Debian/Ubuntu, the libwebp-dev library must be installed before installing PIL.

WordPress

Use the image_editor_ouptut_format hook to map the mimetypes for jpeg and jpg images to the mimetype for WebP images. Add the following to a theme's functions.php file:

// Convert JPG images to WebP
function map_jpeg_to_webp( $formats ) {
    $formats['image/jpeg'] = 'image/webp';
    $formats['image/jpg'] = 'image/webp';
    return $formats;
}

add_filter( 'image_editor_output_format', 'map_jpeg_to_webp' );

Any JPG image will then have WebP thumbnails generated, provided the image is bigger than the thumbnail size. If thumbnails need to be manually regenerated after adding this function, the WP CLI provides the media regenerate command to do so:

$ wp media regenerate --image_size=spam_and_eggs

To create a new thumbnail size, define it in the functions.php file with the add_image_size() method:

add_image_size('spam', 640, 400, true);

Use a WebP image as a background image with a JPG fallback

Use webp as a background image:

.foo {
    background: image-set(url('../img/foo.webp') type('image/webp'), url('../img/foo.jpg') type('image/jpeg')) no-repeat center center;
}

Place a WebP image in HTML with a JPG fallback

As demonstrated in this Digital Ocean piece, webp images can also be used in a <picture> element alongside legacy formats such as JPG.

The advantage with using the images in the markup is the ability to do things like set the correct fetch priority and/or lazy load them.


    
    Foo

Feedback?

Email us at enquiries@kinsa.cc.