让 WordPress 支持 webp 图片格式上传到媒体库

/ 1,202 阅读 / 0

Wordpress 本身是不支持 Webp 的图片格式的,但是 WebP 格式的图片压缩体积大约只有 JPEG 的 2/3,并能节省大量的服务器宽带资源和数据空间。

与 JPEG 相同,WebP 是一种有损压缩。但谷歌表示,这种格式的主要优势在于高效率。他们发现,“在质量相同的情况下,WebP 格式图像的体积要比 JPEG 格式图像小 40%。谷歌浏览器已经支持 webp 格式,Opera 在版本号 Opera11.10 后也增加了支持,然而火狐和 ie 暂时还不支持 webp 格式,可以采用 flash 插件来显示 webp,当然这样会耗费一些性能。

美中不足的是,WebP 格式图像的编码时间 “比 JPEG 格式图像长 8 倍”。

而默认情况下,WordPress 不支持上传 WebP 格式的图片,在主题的 functions.php 里添加以下代码即可:

function bzg_filter_mime_types( $array ) {
	$array['webp'] = 'image/webp';
	return $array; 
}
add_filter( 'mime_types', 'bzg_filter_mime_types', 10, 1 );

虽然现在已经可以上传 WebP 格式的图片了,但在媒体列表中看不到缩略图,这是因为 WordPress 在用 wp_generate_attachment_metadata() 函数生成图片数据时,使用了 file_is_displayable_image() 函数判断文件是否为图片,判断 WebP 图片的结果为否,因此中断了保存图片数据的操作。

解决办法是在主题的 functions.php 里添加以下代码:

function bzg_file_is_displayable_image($result, $path) {
    $info = @getimagesize( $path );
    if($info['mime'] == 'image/webp') {
        $result = true;
    }
    return $result;
}
add_filter( 'file_is_displayable_image', 'bzg_file_is_displayable_image', 10, 2 );

在这之后上传 WebP 格式图片不会再有问题了。

Windows 下如何查看 webp 格式

至于在 windows 上如何查看 Webp 格式的图片,我使用的是 QuickLook 来预览图片。

下载 QuickLook

另外,网友还提供了另外的一种方式,通过安装编码器让 Windows 支持 webp,编码器安装文件大小 4.91M,安装完编码器之后最好还是重启一下电脑。

wpsywebpgstp01

如果需要,可以通过下面的链接下载获取。