WebP图片压缩Emlog插件详细使用说明
WebP图片压缩Emlog插件【webp_compress】详细使用说明
将 Emlog 中上传的图片自动转换为 WebP 格式,并限制宽度,显著节省存储空间和带宽。支持批量转换历史图片。
功能特性
- 自动转换:新上传的 JPG/PNG/GIF/BMP 图片自动转为 WebP,并等比缩放到设定宽度
- 缩略图豁免:系统生成的缩略图(
thum-前缀)不会被转换 - 宽度限制:可自定义最大宽度(默认 600px),超出则等比缩小
- 批量转换:一键扫描并转换所有历史图片
- URL 修复:自动更新文章中已转换图片的引用路径,支持文章内容、封面、摘要、主题配置(含序列化数据)
- 前台过滤:可选开启前台输出时替换旧图片 URL,兼容遗漏场景
- 双重编码支持:优先使用 GD 的
imagewebp(),不支持时自动降级到 Imagick
环境要求
- Emlog:任何支持插件系统的版本
- PHP:7.4+
- GD 库或 Imagick:至少一项支持 WebP 输出
WebP 支持检测
插件设置页顶部会显示服务器环境检测结果:
| 扩展 | 状态 |
|---|---|
| GD WebP | 需要 PHP 编译时加 --with-webp |
| Imagick WebP | 需要安装 ImageMagick + WebP 委托库 |
两项都不支持时,批量转换和自动转换均无法工作。
安装
- 将
webp_compress整个目录上传到 Emlog 的content/plugins/目录下 - 登录 Emlog 后台 → 插件 → 找到「WebP图片压缩」→ 点击「启用」
- 进入插件设置页,按需调整配置

使用说明
基本设置
- 最大宽度:图片宽度超过此值将被等比缩小。设为较大值(如 2000)可仅转换格式不改变尺寸
- WebP 质量:1-100,推荐 80。数值越高画质越好,文件也越大
- 前台过滤开关:开启后,前台文章页会自动把 JPG/PNG/GIF 图片 URL 替换为 WebP(仅限单篇文章页)
批量转换历史图片
- 点击「扫描待转换图片」,列出所有未转换的图片
- 点击「开始转换全部」,逐张转换并显示进度
- 转换完成后,点击「修复文章URL」更新文章中已转换图片的引用地址(带进度条)
注意:转换操作不可逆,原始文件会被删除。
修复文章 URL
当批量转换完成后,文章内容、封面、摘要中引用的图片地址仍然是旧的 JPG/PNG 路径,需要点击此按钮进行更新。操作分三个阶段:
- 扫描:查找所有已转换的 WebP 图片
- 逐张修复:在文章内容、封面、摘要中替换旧路径
- 最终处理:更新系统配置(包括主题设置中的路径),重建缓存
文件结构
content/plugins/webp_compress/
├── README.md # 本说明文件
├── webp_compress.php # 主文件:钩子注册 + 上传处理 + 转换逻辑 + 内容过滤
├── webp_compress_callback.php # 生命周期回调:激活初始化、卸载清理
└── webp_compress_setting.php # 后台设置页:配置表单 + 批量转换 + URL 修复
webp_compress.php
| 钩子 | 类型 | 用途 |
|---|---|---|
upload_media |
doOnceAction | 接管上传流程,自动转 WebP |
del_media |
doAction | 删除媒体时清理孤儿缩略图 |
article_content_echo |
doMultiAction | 前台文章页输出过滤,替换旧图片 URL |
核心函数:
| 函数 | 说明 |
|---|---|
webp_compress_upload_handler() |
上传处理器,调用系统 upload() 后执行转换 |
webp_compress_do_convert() |
WebP 转换 + 尺寸缩放,含 GD 和 Imagick 双引擎 |
webp_compress_del_media() |
清理 orphan 缩略图文件 |
webp_compress_content_filter() |
前台内容输出过滤,正则替换图片 URL |
webp_compress_has_webp_support() |
检测服务器 WebP 输出能力 |
webp_compress_setting.php
AJAX 接口:
| action | 用途 |
|---|---|
scan |
扫描未转换图片 |
convert |
转换单张图片并更新文章 URL |
fix_scan |
扫描已转换的图片 |
fix_one |
修复单张图片在文章中的引用 |
fix_finalize |
更新系统配置缓存 |
数据库操作
插件不创建自定义数据表,使用 Emlog 的 Storage 类存储配置。批量转换和 URL 修复操作会更新以下系统表:
attachment:更新文件路径、类型、尺寸blog:更新content、cover、excerpt中的图片 URLoptions:更新序列化数据(如主题设置中的 logo 路径)
已知限制
article_content_echo钩子仅在单篇文章页触发,列表页不生效- 建议转换完成后使用「修复文章URL」功能更新数据库,而非依赖前台过滤器
卸载
在后台插件列表点击「卸载」即可,插件会自动清除所有配置数据。此操作不会删除已转换的 WebP 图片文件。
资源下载
0
0
评论区 (2)
发表评论
共有 2 条评论
批量转换直接删除原始文件这个设计有点冒险,万一WebP质量不满意或者某些特殊场景不兼容就尴尬了。建议加个“保留原图副本”的开关,或者像站长工具那样移到回收站,留个后悔药。
插件功能挺全的,不过建议加个“保留原始文件”的选项,直接删除原图有点冒险,万一转换后效果不理想就麻烦了。另外GIF动图转WebP会丢失动画,能不能加个检测机制自动跳过?