图片压缩
在浏览器本地压缩图片:支持转存为 JPG、PNG 或 WebP,按「质量」与「最长边」两个维度控制体积,压缩前后体积对比直接展示,压完一键下载。全程本地处理,图片不经过任何服务器。
传附件超了 10MB、博客图拖慢加载速度、相册存储告急——图片瘦身是最高频的整理需求。选格式(WebP 通常最小)、调质量、限定最长边,两个旋钮控制体积,压完前后大小对比立刻可见;PNG 压不动就转 JPG,这些门道下面的说明都写了。
口径提醒:质量系数只对 JPG 与 WebP 这类有损格式生效,80 是常用默认值,60 适合聊天分享,85 以上适合存档打印;PNG 是无损格式,重编码变化有限,想明显变小请转 JPG 或 WebP;「最长边」缩放与压缩可叠加,设 0 表示只压缩不缩放。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 点「选择图片」挑图,或切「内置示例」看效果。
- 调质量(JPG/WebP 生效)与最长边(0 为不缩放)。
- 点「压缩」,看压缩前后的体积对比。
- 点下载保存;不满意调参数重来。
计算原理与示例
怎么压缩一张图
点「选择图片」挑选要压缩的照片或截图,或切到「内置示例」先看效果;调好质量与最长边后点「压缩」,下方会给出压缩前后的体积对比,点下载即可保存。
质量参数怎么选
质量系数只对 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 像素以内。最终尺寸以结果区显示的数值为准。
支持批量压缩吗?
当前版本一次处理一张,处理完直接换下一张即可连续操作。批量队列与打包下载在规划中,若你高频需要批量场景,欢迎通过页面反馈告诉我们。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。