图片压缩分为两大类。有损压缩(Lossy)会丢弃部分视觉冗余信息,以换取更小的文件体积,JPEG 和 WebP 均支持有损模式。无损压缩(Lossless)不丢失任何像素数据,PNG 使用 DEFLATE 算法进行无损压缩,WebP 也支持无损模式。
| 格式 | 压缩类型 | 透明通道 | 最佳使用场景 |
|---|---|---|---|
| JPEG | 有损 | 不支持 | 照片、渐变色彩丰富的图像 |
| PNG | 无损 | 支持(Alpha) | 截图、图标、需要透明背景的图像 |
| WebP | 有损 + 无损 | 支持 | Web 端图片,兼顾质量与体积 |
| GIF | 无损(最多256色) | 支持(1位) | 简单动画、低色彩图标(已逐渐被替代) |
| AVIF | 有损 + 无损 | 支持 | 新一代 Web 图片,体积最小,兼容性仍在完善 |
以 JPEG 为例,质量参数控制量化表的精细程度。质量从 100 降至 80 通常可减少约 60–70% 的文件大小,而肉眼几乎看不出差异。质量低于 60 时,块状压缩伪影(Blocking Artifact)会开始明显。推荐将质量设置在 75–85 之间,可在体积与视觉质量间取得良好平衡。
本工具使用浏览器内置的 Canvas API 进行纯前端压缩,所有数据均在本地处理,不上传至任何服务器。核心步骤如下:
<canvas> 元素上(像素解码)canvas.toBlob(callback, mimeType, quality),由浏览器的原生编码器重新编码注意:PNG 为无损格式,调整质量参数对 PNG 输出无效;若需缩小 PNG 文件,建议将输出格式切换为 JPEG 或 WebP。