PHP 8.4.2 Released!

imagewebp

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

imagewebp将 WebP 格式的图像输出到浏览器或文件

说明

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

输出或保存为指定 image 的 WebP 版本。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的 GdImage 对象。

file

文件保存的路径或者已打开的流资源(此方法返回后自动关闭该流资源),如果未设置或为 null,将会直接输出原始图象流。

quality

quality 范围从 0(最低质量,最小文件体积)到 100(最好质量, 最大文件体积)。

返回值

成功时返回 true, 或者在失败时返回 false

警告

如果 libgd 输出图像失败,函数会返回 true

错误/异常

如果 quality 无效,抛出 ValueError

更新日志

版本 说明
8.4.0 现在如果 quality 无效,抛出 ValueError
8.0.0 image 现在需要 GdImage 实例;之前需要有效的 gd resource

示例

示例 #1 保存为 WebP 图像文件

<?php
// 创建一个空图像并在其上加入一些文字
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);

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

// 保存图像
imagewebp($im, 'php.webp');

// 释放内存
imagedestroy($im);
?>

添加备注

用户贡献的备注 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