笨猫博客

  • 🍟首页
  • 🍘目录
    • 🥝VPS教程
    • 🍾猫玩技术
    • 🍹干货分享
    • 🍏软件分享
    • 🍩一只猫
  • 🍋工具
    • 🌽IP路由追踪
    • 🍐域名Whois查询
    • 🥘域名被墙查询
    • 🍧IP正常检测
    • 🔥IP端口检测
    • 🍆短网址
    • 🐟VIP音乐播放
    • 🍯KMS激活
  • 🍓链接
  • 🍪联系
  • 🍱登录
    • 🥦登录
    • 🍒注册
关注互联网,生活,音乐,乐此不疲的一只笨猫
  1. 首页
  2. 猫玩技术
  3. 正文

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

2019-05-16 7236点热度 1人点赞 1条评论

很久之前就发现WordPress上传jianshu或者微信图片不行,提示webp格式不支持。如今又发现今日头条保存下来的图片出现一样的问题,虽然表面看是jpg格式,但实际下载为webp格式。一介小民找到了解决方法:

步骤

打开 wordpress目录下的wp-includes/functions.php

搜索'image/gif',在下一行加入 'image/webp' => 'webp', 再次搜索gif,会出现第二第三个gif词,同理加入webp就行了。这样你的WordPress就支持微信图片、今日头条图片的上传到媒体了。

 

默认情况下,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格式图片不会再有问题了,但之前已经上传的其他格式的图片要替换为WebP格式还是比较麻烦,分享一下我的解决过程:

  1. 使用“Ubuntu下批量转换WebP格式图形工具”将wp-content/uploads目录中的图片全部转换为WebP格式,如果你是Windows系统,可以搜索一下相应的转换工具;
  2. 编写了一小段脚本读取数据库中所有的图片,使用wp_update_attachment_metadata()函数更新这些图片的数据;
  3. Gedit编辑器正则表达式替换wp_postmeta表中meta_key为_wp_attached_file的图片名称,可以看到这个表中meta_key为_wp_attachment_metadata对应的数据已经在第2步中替换了;
  4. Gedit编辑器正则表达式替换文章数据表中插入的图片链接;

由于我在处理时没有保存相应的脚本和正则表达式,所以你只有自己动手丰衣足食了。

关于webp
WebP是Google新推出的影像技术,它可让网页图档有效进行压缩,同时又不影响图片格式兼容与实际清晰度,进而让整体网页下载速度加快。

由于目前互联网上传输的数据有65%都是图片,WebP就是出于减少数据量、加速网络传输的目的而开发的。为了改善JPEG的图片压缩技术,他们使用了一种基于VP8编码(已在2010五月开源)的图片压缩器,利用预测编码技术,同时还采用了一种基于RIFF的非常轻量级的容器。这种容器只会给每张图片增加20字节,但能让图片作者保存他们想要存储的元数据。

与JPEG相同,WebP是一种有损压缩利用预测编码技术。但谷歌表示,这种格式的主要优势在于高效率。他们发现,“在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%。
目前, Google放出了WebP文件解码器(libvpx)和命令行工具(webpconv),用于JPEG等格式图片与WebP格式之间的转换,不过系统支持暂时仅限Linux,Windows版本将在稍后推出。
WebP团队还在开发WebKit内核补丁,用于在Google Chrome浏览器中提供对WebP格式的原生支持。

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

标签: webp 图片格式
最后更新:2019-05-06

笨猫

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • QQ游客

    需要再补充一句:这段代码在PHP7.1以上的版本才可以,7.0的都不行。

    2019-06-26
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    最新 热点 随机
    最新 热点 随机
    DD一个轻量的Alpine+Linux+发行版+更轻+更快+更安全 在线AI音频人声分离、在线音乐变速 GifCam - 简单有趣、小巧流畅的免费 Gif 屏幕录制软件 微软出品的实用小工具集PowerToys AI Markdown Converter(支持 PDF/图片/HTML/Office 转 Markdown) 检测删除你的微信好友,本地协议亲测有效
    GifCam - 简单有趣、小巧流畅的免费 Gif 屏幕录制软件在线AI音频人声分离、在线音乐变速DD一个轻量的Alpine+Linux+发行版+更轻+更快+更安全
    日本人论坛上的韩国人笑话…… DirectAdmin 1.44.3 开心版 + CaPri 皮肤一键安装包 屏幕尺子:虚拟化测量工具 Tampermonkey:油猴脚本自动抢购斯巴达spartanhost vps IP.SB - 在线 IPv4 / IPv6 信息查询 CentOS解决无意间宝塔面板引发的连锁问题 - “Failed to initialize NSS library”
    最近评论
    C 发布于 2 周前(05月04日) 有个更省心的路子,上传到 catbox.moe,然后用 i0.wp.com 做加速(也支持heif格...
    薯条 发布于 2 个月前(03月21日) 这个博客18年了吗,好久了哎
    Q 发布于 2 个月前(03月19日) 您好: 我的一个WORDPRESS站点,安装了 wp telegram插件,我在配置了Bot ...
    喂 发布于 2 个月前(03月08日) 热帖ggww
    999 发布于 3 个月前(03月02日) 请问脚本效果还能正常使用不?
    标签
    elliptictrue100.10.02
    BLOG ChatGPT Chrome CloudFlare DirectAdmin github Godaddy google kloxo Linux OneDrive OneIndex PHP QQ shadowsocks SNS ssh Typecho VPS web2.0 whmcs Windows wordpress 一键脚本 下载 免费 博客 图文教程 图标 图片 域名 头像 奥运 宝塔面板 插件 教程 日记 有趣 浏览器 游戏 猫 生活 电影 百度 网站 视频 设计 软件 阿里云盘 音乐
    好友
    • glzjin's blog glzjin's blog
    • ZAERA博客
    • 冰沫记
    • 奇它博客
    • 猫腻‘s Blog
    • 猫饭
    • 肥宅之家
    • 萌博
    • 野路子程序员

    COPYRIGHT © 2022 笨猫博客. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang