PHP Conference Nagoya 2025

imagewebp

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

imagewebpOutput a WebP image to browser or file

Description

imagewebp(GdImage $image, resource|string|null $file = null, int $quality = -1): bool

Outputs or saves a WebP version of the given image.

Parameters

image

A GdImage object, returned by one of the image creation functions, such as imagecreatetruecolor().

file

The path or an open stream resource (which is automatically closed after this function returns) to save the file to. If not set or null, the raw image stream will be output directly.

quality

quality ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file).

Return Values

Returns true on success or false on failure.

Caution

However, if libgd fails to output the image, this function returns true.

Errors/Exceptions

Throws a ValueError if quality is invalid.

Changelog

Version Description
8.4.0 Now throws a ValueError if quality is invalid.
8.0.0 image expects a GdImage instance now; previously, a valid gd resource was expected.

Examples

Example #1 Saving an WebP file

<?php
// Create a blank image and add some text
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);

imagestring($im, 1, 5, 5, 'WebP with PHP', $text_color);

// Save the image
imagewebp($im, 'php.webp');

// Free up memory
imagedestroy($im);
?>

add a note

User Contributed Notes 5 notes

up
31
vinicius dot sizilio at gmail dot com
4 years ago
To convert a PNG image to Webp, we can do this:

<?php

// Image
$dir = 'img/countries/';
$name = 'brazil.png';
$newName = 'brazil.webp';

// Create and save
$img = imagecreatefrompng($dir . $name);
imagepalettetotruecolor($img);
imagealphablending($img, true);
imagesavealpha($img, true);
imagewebp($img, $dir . $newName, 100);
imagedestroy($img);

?>
up
32
Khalyomede
5 years ago
As of today (end of january 2019), WebP is now supported across all the major browsers (Edge, Chrome, Firefox, Opera).
up
22
JSix
2 years ago
Function to save any image to Webp

public static function webpImage($source, $quality = 100, $removeOld = false)
{
$dir = pathinfo($source, PATHINFO_DIRNAME);
$name = pathinfo($source, PATHINFO_FILENAME);
$destination = $dir . DIRECTORY_SEPARATOR . $name . '.webp';
$info = getimagesize($source);
$isAlpha = false;
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($isAlpha = $info['mime'] == 'image/gif') {
$image = imagecreatefromgif($source);
} elseif ($isAlpha = $info['mime'] == 'image/png') {
$image = imagecreatefrompng($source);
} else {
return $source;
}
if ($isAlpha) {
imagepalettetotruecolor($image);
imagealphablending($image, true);
imagesavealpha($image, true);
}
imagewebp($image, $destination, $quality);

if ($removeOld)
unlink($source);

return $destination;
}
up
6
day4gerard
5 years ago
WebP is not yet supported by Safari, although they are experimenting with it.

Check out https://caniuse.com/#search=webp for the latest support information.
up
1
Sam
3 years ago
Safari on mac now has limited support (limited to Safari 14+ on Big Sur or later)

Safari on iOS 14.4 and higher has full support
To Top