文件图片 本地计算 开箱即用 内置示例 不留痕迹

图片压缩

在浏览器本地压缩图片:支持转存为 JPG、PNG 或 WebP,按「质量」与「最长边」两个维度控制体积,压缩前后体积对比直接展示,压完一键下载。全程本地处理,图片不经过任何服务器。

传附件超了 10MB、博客图拖慢加载速度、相册存储告急——图片瘦身是最高频的整理需求。选格式(WebP 通常最小)、调质量、限定最长边,两个旋钮控制体积,压完前后大小对比立刻可见;PNG 压不动就转 JPG,这些门道下面的说明都写了。

口径提醒:质量系数只对 JPG 与 WebP 这类有损格式生效,80 是常用默认值,60 适合聊天分享,85 以上适合存档打印;PNG 是无损格式,重编码变化有限,想明显变小请转 JPG 或 WebP;「最长边」缩放与压缩可叠加,设 0 表示只压缩不缩放。

使用步骤

  1. 点「选择图片」挑图,或切「内置示例」看效果。
  2. 调质量(JPG/WebP 生效)与最长边(0 为不缩放)。
  3. 点「压缩」,看压缩前后的体积对比。
  4. 点下载保存;不满意调参数重来。

计算原理与示例

怎么压缩一张图

点「选择图片」挑选要压缩的照片或截图,或切到「内置示例」先看效果;调好质量与最长边后点「压缩」,下方会给出压缩前后的体积对比,点下载即可保存。

质量参数怎么选

质量系数只对 JPG 与 WebP 生效:80 是常用默认值,肉眼几乎看不出损失;传聊天群、贴网页可以降到 60 左右;要打印或存档就保持 85 以上。数值越低体积越小,但也越容易出现块状模糊。

最长边有什么用

最长边会把图片等比缩到指定像素以内,适合「换个头像」「传个证件照」这类对原始分辨率没有要求的场景。设为 0 表示不缩放,只做格式压缩。

输出格式怎么选

想保持透明背景选 PNG;想要明显变小的体积选 JPG 或 WebP——同样的画面 WebP 通常比 JPG 再小两三成,适合网页与聊天传输;需要后续在别的软件里编辑时选 JPG 兼容性更稳。

代码示例

JavaScript 画布压缩 + 最长边缩放

// 读文件 → 画到 canvas → 按最长边等比缩放 → toBlob 指定质量导出
async function compress(file, maxEdge = 1920, quality = 0.8) {
  const img = await createImageBitmap(file);
  const scale = Math.min(1, maxEdge / Math.max(img.width, img.height));
  const canvas = document.createElement('canvas');
  canvas.width = Math.round(img.width * scale);
  canvas.height = Math.round(img.height * scale);
  canvas.getContext('2d').drawImage(img, 0, 0, canvas.width, canvas.height);
  // PNG 是无损格式,会忽略 quality;要压体积就导 JPG 或 WebP
  return new Promise((resolve) => canvas.toBlob(resolve, 'image/jpeg', quality));
}
const small = await compress(fileInput.files[0], 1600, 0.75);

Python Pillow 压到指定最长边

from PIL import Image

def compress(src, dst, max_edge=1920, quality=80):
    img = Image.open(src)
    img.thumbnail((max_edge, max_edge))        # 等比缩放,只缩不放
    img.convert('RGB').save(dst, 'JPEG', quality=quality, optimize=True)

compress('photo.jpg', 'small.jpg', 1600, 75)

常见问题

图片会被上传到服务器吗?

不会。压缩用的是浏览器自带的画布能力,从选择、压缩到下载都在你自己的设备上完成,中途断网也不影响已打开的页面。这也是本工具与「上传式压缩站」的根本区别。

为什么 PNG 压缩后几乎没变小?

PNG 是无损格式,重编码只能去掉少量元数据,体积变化有限。想要明显变小,请把输出格式切换成 JPG 或 WebP——有损压缩按质量系数丢弃冗余数据,往往能缩到原来的几分之一。

压缩会损坏画质吗?

转向 JPG/WebP 这类有损格式时会丢弃一部分数据,但质量 80 上下通常肉眼难以分辨。如果是重要照片,建议保留原图备份,输出前先在预览里确认效果。

一次能压多大的图?

建议单张在 30 MB 以内。更大的图受设备内存限制可能压缩失败,可先用系统工具裁剪缩小后再来处理;手机上建议避免同时开太多应用。

WebP 和 JPG 应该选哪个?

两者的差别在于体积与兼容性的取舍:WebP 在同等画质下体积更小,适合网页、聊天与存储;JPG 的兼容面更广,适合还要导入其他软件继续编辑的场景。两者都不支持透明通道。

压缩后的尺寸和设置不完全一样是为什么?

缩放按比例计算后取整,并保证宽高都不低于 1 像素,因此结果可能与输入差 1 像素以内。最终尺寸以结果区显示的数值为准。

支持批量压缩吗?

当前版本一次处理一张,处理完直接换下一张即可连续操作。批量队列与打包下载在规划中,若你高频需要批量场景,欢迎通过页面反馈告诉我们。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。