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 — Muestra una imagen WebP hacia un navegador o un fichero
Muestra o guarda una versión WebP de la image
proporcionada.
image
Un objeto GdImage, retornado por una de las funciones de creación de imágenes, como 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
rango de 0 (la peor calidad, fichero más pequeño)
a 100 (mejor calidad, fichero más grande).
Si se proporciona el valor -1
, se utiliza el valor por omisión 80
.
Esta función retorna true
en caso de éxito o false
si ocurre un error.
However, if libgd fails to output the image, this function returns true
.
Genera una ValueError si quality
es inválido.
Versión | Descripción |
---|---|
8.4.0 |
Genera ahora una ValueError si quality es inválido.
|
8.0.0 |
image expects a GdImage
instance now; previously, a valid gd resource was expected.
|
Ejemplo #1 Guardado de un fichero WebP
<?php
// Crea una imagen vacía y se añade texto
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'WebP con PHP', $text_color);
// Guardado de la imagen
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.