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 — Affiche une image WebP vers un navigateur ou un fichier
Affiche ou sauvegarde une version WebP de l'image
fournie.
image
Un objet GdImage, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().
file
Le chemin ou un flux de ressource ouvert (qui sera automatiquement fermé après
le retour de cette fonction) vers lequel le fichier sera sauvegardé.
Si non-défini ou null
, le flux brute de l'image sera affiché directement.
quality
quality
plage de 0 (la pire qualité, plus petit
fichier) à 100 (meilleure qualité, plus grand fichier).
Si la valeur -1
est fournie, la valeur par défaut 80
est utilisée.
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Toutefois, si libgd ne parvient pas à produire l'image, cette fonction retourne true
.
Lève une ValueError si quality
est invalide.
Version | Description |
---|---|
8.4.0 |
Lève désormais une ValueError si quality est invalide.
|
8.0.0 |
image attend une instance de GdImage désormais;
auparavant, une resource gd était attendue.
|
Exemple #1 Sauvegarde d'un fichier WebP
<?php
// Crée une image vide et on y ajoute du texte
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'WebP avec PHP', $text_color);
// Sauvegarde de l'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.