后台图片格式转换与压缩(WebP)
后台上传图片自动转换为 WebP 格式并压缩体积,中文文件名自动转为拼音,重名文件自动处理,避免覆盖。
查看更多
0 下载次数
33 查看数
2026-11-12 最后更新
¥68.00
¥99.00
一次购买永久使用,并赠送1个月技术支持
如何购买
1
登录您的BeikeShop商城后台
2
点击右上角“插件市场”
3
选择需要购买的插件
4
购买&安装
插件描述
后台图片 WebP 转换插件(BeikeShop)
技术支持QQ:2651785148

功能
- 支持设置转换后最大体积(KB),默认 300 KB,转换后的 WebP 保证不超过该上限。
- 先按设置的质量编码,满足就直接保存(小图不会被缩小);
- 超限则先把质量降到 35 为止,仍超限再按体积与像素数的关系一步估算缩放比例,而不是逐级试错;
- 解码后长边最多保留 3200 px,避免对超大原图反复编码。
- 若服务器的 ImageMagick 对 WebP 忽略 quality 参数(如 Ubuntu 24.04 默认的 ImageMagick 6.9.12 + libwebp),
插件会自动探测并改用 libwebp 的
target-size控制体积。
- 自动按 EXIF 方向矫正(手机竖拍照片不会变成横躺),CMYK 图片自动转 sRGB。
- 中文文件名转拼音,重名时自动生成唯一名称。
- 上传文件名自动转为小写拼音/ASCII,例如“红色连衣裙.jpg”转换为“hong-se-lian-yi-qun.webp”。
- 重名时调用 BeikeShop 唯一文件名机制追加 UUID,避免覆盖已有文件。
- 被排除转换的图片保存原格式,但文件名仍会规范为拼音。
- 通过
controller.file_manager.construct扩展点替换后台文件管理服务,不直接改动核心服务类。 - 后台文件管理器上传时,按后台勾选项将图片转成 WebP。
- 支持选择转换/排除:JPG、JPEG、JFIF、PNG、BMP、DIB、GIF、TIF、TIFF、AVIF、HEIC、HEIF、ICO、PSD。
- WebP 不重复转换;MP4 保持原样;未勾选的文件原样保存;勾选转换但服务器无法解码的文件会提示格式解码失败。
- GIF 转换只取首帧,动画会丢失;建议将 GIF 加入排除项。
安装
- 备份网站和数据库。
- 将
BeikeWebpOptimizer目录上传到站点plugins/目录。 - 在后台插件管理中安装并启用。
- 在插件设置中开启转换(从未保存过设置时,插件默认启用转换;在设置页明确保存为「关闭」才会停用),勾选需要转换的格式和排除格式,设置质量和“转换后最大体积(KB)”。例如设置 300,转换成功保存的 WebP 文件必须小于或等于 300 KB;插件会持续降低质量并缩小图片尺寸,直到输出不超过设定上限;源图 7 MB 不会因为插件的 300 KB 输出目标而被拒绝(但仍受服务器 PHP 上传大小限制)。
重要:扩展后台允许上传格式
BeikeShop 自带 beike/Admin/Http/Requests/UploadRequest.php 对扩展名和 MIME 类型有白名单校验。仅安装插件不会自动放开该白名单。
如果要上传 BMP/TIFF/AVIF/HEIC/ICO/PSD 等新增格式,请先备份该文件,再在站点根目录执行:
patch -p1 --dry-run < plugins/BeikeWebpOptimizer/Patches/UploadRequest.php.patch # 先试运行
patch -p1 < plugins/BeikeWebpOptimizer/Patches/UploadRequest.php.patch
(补丁已针对 BeikeShop 源码验证可应用。)它会更新 rules() 的 mimes 列表和 isValidMimeType() 的 MIME 白名单。仅上传 JPG/PNG/GIF/WebP 时不需要打此补丁。该补丁只放开格式校验,不修改上传路径和业务逻辑。升级 BeikeShop 后需重新核对该文件。
服务器依赖
- 中文转拼音需要 PHP intl 扩展(ICU Transliterator)。检查:
php -r "var_dump(class_exists('Transliterator'));"。网站 PHP-FPM 使用的 PHP 版本也必须启用 intl。未安装 intl 时,非 ASCII 文件名会安全回退为image,不会保证拼音结果。 - JPG/JPEG、PNG、GIF、BMP 等常见格式:需要 PHP GD 且
imagewebp()可用。 - TIFF、HEIC/HEIF、AVIF、PSD 等:建议安装 PHP Imagick,并确认服务器 ImageMagick 对应 delegate/codec 已启用。仅安装 Imagick 扩展不代表每种格式都可解码。
- 内存:GD 解码约需「宽×高×4」字节。使用 PHP 内置(bundled)GD 且图片像素过大时,插件会直接提示「像素尺寸过大」而不是让 PHP 崩溃;建议启用 Imagick。
- 检查 GD:
php -r "var_dump(function_exists('imagewebp'));" - 检查 Imagick:
php -r "var_dump(extension_loaded('imagick'));" - CLI PHP 与网站 PHP-FPM 可能使用不同配置,请在实际网站 PHP 环境中确认扩展。
安全与行为说明
- 插件仅接管 BeikeShop 后台 File Manager 上传服务,不保证绕过该服务的其他上传入口也会转换。
- 文件扩展名和 MIME 类型同时校验;不接受任意文件伪装成图片。
- 某格式服务器无法解码时,插件会提示解码失败,不会伪造
.webp扩展名。 - 转换输出保存为
.webp,上传接口返回的url和path指向新文件。 - 建议先在测试站验证各格式,并确认透明背景、色彩、方向和动画符合预期。
更新日志
1.3.2
- 修复:大图转换超时。 重写体积控制算法(旧版对 7 MB 级原图需数十秒到数分钟)。
- 修复: ImageMagick 忽略 WebP quality 参数时,旧版的「降低质量」无效。
- 修复: 手机竖拍照片转换后横躺(缺少 EXIF 方向矫正);CMYK 图片颜色异常。
- 修复:
Patches/UploadRequest.php.patch不是合法补丁,无法应用。 - 改进:未保存过设置时默认启用;GD 路径对超大像素图给出明确提示而非致命错误。 ``