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

/ 1,648 阅读 / 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

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

Jaxx Wallet Download

Jaxx Liberty Wallet

Atomic Wallet

Atomic Wallet Download