SuperAPI AI 工具集

image-compression

设计与创作

查看项目

更新于 10-16 03:41

技能介绍

用途:在用户上传图片前进行无缝压缩,采用混合方案降低带宽。客户端首选 Squoosh(WASM),失败时回退到 Canvas API;服务端用 Sharp 作为安全网校验。适用于上传用户图片、需减少带宽、要求对用户透明(无需手动操作)、想用现代编码又需兼容旧浏览器的 Web 应用。不适用于纯服务端批量管线(直接用 Sharp)或大规模复杂媒体处理(用 ImageMagick/FFmpeg)。

主要能力与默认值:保持宽高比、绝不放大;目标最大宽度 1920px、最大体积 512KB;质量从 75 起步,逐步下调以满足体积;优先 JPEG 兼容,体积仍过大时尝试 WebP;记录压缩统计(比例、节省量、处理时间)。服务端最小尺寸 200x200。

使用方式:客户端压缩服务暴露 compressImage(file, options),用动态 import 加载 Squoosh,出错回退 Canvas;上传钩子校验输入为图片、透明压缩后上传压缩后的 blob;服务端中间件用 Sharp 强制限制,仍过大返回 413,并把压缩统计写入日志。参考文件按需加载:client.md、client-usage.md、server.md、storage.md、security.md、monitoring.md、performance.md、quality-metrics.md、env.md、docker.md、implementation-checklist.md。

限制与反模式:不要跳过服务端校验;失败时不要未记录日志就上传原文件;不要放大图片;不要使用阻塞式 UI。预期客户端压缩约 100–500ms,服务端约 50–200ms,带宽减少约 85%–97%。具体实现细节、环境变量与 Docker 配置暂未提供。