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 来预览图片。
另外,网友还提供了另外的一种方式,通过安装编码器让 Windows 支持 webp,编码器安装文件大小 4.91M,安装完编码器之后最好还是重启一下电脑。
如果需要,可以通过下面的链接下载获取。
- 墙外:https://storage.googleapis.com
- 墙内:百度网盘 提取码:kah4