As of today (end of january 2019), WebP is now supported across all the major browsers (Edge, Chrome, Firefox, Opera).(PHP 5 >= 5.4.0, PHP 7, PHP 8)
imagewebp — Output a WebP image to browser or file
Outputs or saves a WebP version of the given image.
imageA GdImage object, returned by one of the image creation functions, such as imagecreatetruecolor().
fileThe 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).
If -1 is provided, the default value 80 is used.
Returns true on success or false on failure.
However, if libgd fails to output the image, this function returns true.
Throws a ValueError if quality is invalid.
| 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.
|
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');
?>As of today (end of january 2019), WebP is now supported across all the major browsers (Edge, Chrome, Firefox, Opera).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);
?>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;
}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.