2024 年 PHP 大会日本站

imagewebp

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

imagewebp将 WebP 图片输出到浏览器或文件

描述

imagewebp(GdImage $image, 资源|字符串| $file = null, 整数 $quality = -1): 布尔值

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

参数

image

一个 GdImage 对象,由其中一个图像创建函数返回,例如 imagecreatetruecolor()

file

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

quality

quality 的范围是 0(最差质量,文件最小)到 100(最佳质量,文件最大)。

返回值

成功返回 true,失败返回 false

警告

但是,如果 libgd 无法输出图像,则此函数返回 true

错误/异常

如果 quality 无效,则抛出 ValueError

变更日志

版本 描述
8.4.0 现在如果 quality 无效,则抛出 ValueError
8.0.0 image 现在需要一个 GdImage 实例;以前需要一个有效的 gd 资源

示例

示例 #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 条注释

vinicius dot sizilio at gmail dot com
4 年前
要将 PNG 图片转换为 WebP,我们可以这样做

<?php

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

// 创建并保存
$img = imagecreatefrompng($dir . $name);
imagepalettetotruecolor($img);
imagealphablending($img, true);
imagesavealpha($img, true);
imagewebp($img, $dir . $newName, 100);
imagedestroy($img);

?>
Khalyomede
5 年前
截至今天(1 月底 2019 年),所有主要浏览器(Edge、Chrome、Firefox、Opera)现在都支持 WebP。
JSix
2 年前
将任何图像保存为 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;
}
day4gerard
5 年前
Safari 尚未支持 WebP,尽管他们正在尝试。

查看 https://caniuse.cn/#search=webp 获取最新的支持信息。
Sam
3 年前
Mac 上的 Safari 现在具有有限的支持(仅限于 Big Sur 或更高版本的 Safari 14+)

iOS 14.4 及更高版本的 Safari 具有完全支持
To Top