PHP 自动转换图片为 WebP 格式+Nginx 自适应

原本是折腾 Nginx-Lua 将 Jpg/png 转换 WebP 并自适应,无奈技术菜,看着别人教程,也没能把 Lua 折腾上。退一步,开了个 DigitalOcean VPS 直接安装 OpenResty(默认带 Lua),测试站,仍然不成功。实在无力,又不甘心,再换一个方法:PHP cwebp 转换图片为 WebP 格式,然后 Nginx 自适应。

方法来自挖站否,有几种方法,需要的不妨折腾试试。简单记录一下。

PHP 自动转换图片为 WebP 格式+Nginx 自适应

方法:初始使用 cwebp 批量将所有图片转换为 WebP,后续 crontab 定时增量转换图片。然后 Nginx 判断浏览器是否支持并输出 WebP。

安装 WebP

yum -y install libwebp-devel libwebp-tools

服务器批量转换 WebP

80 为压缩质量,一般 75 也可以。

find /ooxx.com/wp-content/uploads/ -name "*.jpg" -exec cwebp -q 80 {} -o {}.webp \; 
find /ooxx.com/wp-content/uploads/ -name "*.png" -exec cwebp -q 80 {} -o {}.webp \; 
find /ooxx.com/wp-content/uploads/ -name "*.gif" -exec gif2webp -q 80 {} -o {}.webp \;

crontab 定时增量转换 WebP 图片

只转换一天内修改过的图片:

#!/bin/sh

find /ooxx.com/wp-content/uploads/ -mtime -1 -name "*.jpg" -exec /usr/bin/cwebp -q 80 {} -o {}.webp \;
find /ooxx.com/wp-content/uploads/ -mtime -1 -name "*.png" -exec /usr/bin/cwebp -q 80 {} -o {}.webp \;
find /ooxx.com/wp-content/uploads/ -mtime -1 -name "*.gif" -exec /usr/bin/gif2webp -q 80 {} -o {}.webp \;

上面代码修改后,保存为 convert2webp.sh,上传到 root 目录下。

允许脚本执行:

chmod +x /root/convert2webp.sh

8小时执行一次转换:

01 */8 * * * /root/convert2webp.sh > /dev/null 2>&1 &

方法有点菜,不过总比手动好吧?囧……

Nginx 判定并自动加载 WebP 图片

nginx 配置文件 nginx.conf http {} 中加入以下代码:

map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}

主机配置文件 ooxx.com.conf 中 server {} 段加入以下代码:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
#expires 30d;
#access_log off;
add_header Cache-Control "public, no-transform";
add_header Vary "Accept-Encoding";
try_files $uri$webp_suffix $uri =404;
expires max;
}

重启一下 nginx——service nginx restart,Ctrl+F5 刷新一下带图片文章,就会加载 WebP 图片。

右键图片打开路径还是原本 .png 或者 .jpg 路径,右键另存为就是 .png.webp 或者 .jpg.webp 格式。

后记更新

有些图片压缩很明显,也有些图片体积反而增大不少,还是去掉算了。

参考资料

网站启用WebP格式图片-PHP和Nginx转化WebP格式和自适应浏览器

为Nginx添加将图片转换成WebP支持

Nginx+PHP配置自动转换webp图片

nginx 之前端图片webp

find命令

除非注明,沙唐桔文章均为原创,本文地址 https://cyhour.com/1149/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!

Sublime Text 批量删除文件空白行

不知道为啥,新版本的 WordPress 安装完成后生成的 wp-config.php 文件会被隔行插入一行空行,另外,发现从后台上传本地主题 zip 压缩包进行安装,这个主题的所有文件都会被隔行插入一行空行,这是 bug?我现在用 Sublime Text 3 (和谐版)编辑主题文件,于是找了一下 Sublime Text 删除空行的方法,…
浏览: 114 标签: 

Sublime Text 3 热键失效

今天折腾博客,发现 Sublime Text 3 快速选中多个地方热键(Ctrl+Alt+UP/DOWN)失效,原本以为是老问题:英特尔图形属性占用快捷键,看了一下,并没有。 找了一圈,试了几个工具,没找到是哪个程序快捷键冲突。然后尝试使用 Windows Hotkey Explorer 找找。MD,这货安装完,打开,屏幕噼里啪啦…
浏览: 58 标签:  ,  ,  , 
浏览: 55 标签:  ,  ,  ,  , 

Comments:11

  1. 沙唐桔-浮游
    浮游

    WebP挺好可惜苹果设备不支持,不然也想着上WebP,换句话说只要把苹果干掉,WebP就全平台支持了

    2019.09.28 10:31 # 回复
    1楼
    • @浮游 上吧,兼容一下就好。

      2019.09.28 12:22 # 回复
      • 浮游

        @老杨 很讨厌适配的问题,真以后成了全平台的标准在上吧

        2019.09.28 14:31 # 回复
        • @浮游 只要判断一下,凡是chrome的适配webp,其余保持原状。

          2019.09.28 23:01 # 回复
          • @Yan 然而比较尴尬的是本文图片 WebP 格式比原本 png 图片还要大……

            2019.09.29 19:54 # 回复
  2. 这个有用 放进收藏夹

    2019.09.30 07:29 # 回复
    2楼
  3. hmm,可以考虑我的方法。。

    https://kn007.net/topics/add-convert-image-to-webp-support-for-nginx/

    2019.10.03 19:58 # 回复
    3楼
    • @kn007 参考文章那里就有你的文章啊,第一步 Lua 就没搞定,就放弃了……

      2019.10.03 22:52 # 回复

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息