笨猫博客

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

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

2019-05-16 7432点热度 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
    取消回复

    最新 热点 随机
    最新 热点 随机
    简洁、纯HTML导航项目:XG-NAV(开源) outlook邮箱安全修改方案,让你的邮箱安全无忧 Docker容器一键全自动迁移脚本 永久免费 qzz.io 域名 可托管至CloudFlare SSL 证书申请工具 | 免费 HTTPS 证书网页在线申请 Let's Encrypt、ZeroSSL 等 HTTPS 证书 免登录 Afilmory - 一个现代化照片画廊网站
    Docker容器一键全自动迁移脚本永久免费 qzz.io 域名 可托管至CloudFlareoutlook邮箱安全修改方案,让你的邮箱安全无忧简洁、纯HTML导航项目:XG-NAV(开源)
    name.com新注册.com/.net域名限时促销7.99美元 挪威风光 Proxmox VE配置Let's Encrypt自动申请续订SSL证书 扫黄网:看上去很美 泛黄岁月,你懂的 期待小米手机发布
    最近评论
    vip券网 发布于 2 周前(08月01日) 写的很详细,赞 :razz: :evil:
    萧瑟 发布于 1 个月前(07月14日) 这个我也用了好久,不知道啥时候能上IP证书
    梵蒂冈 发布于 1 个月前(07月08日) 士大夫
    HuangWei 发布于 2 个月前(06月16日) 自己手动设置确实很烦,我之前使用过这个,感觉还不错,虽然已经不怎么维护了:https://githu...
    龙笑天 发布于 3 个月前(05月25日) 一直用的萌咖的路过 :smile:
    标签
    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