使用方法
压缩图片转20KB是「选图、定目标、点压缩」三步:
- 「选择图片」挑一张本地图片,支持 jpg、png、webp;也可以点「生成示例图」直接用内置样例体验。
- 「目标大小」填想压到的体积,默认 20 KB;「最长边」填缩放上限,默认 1280 像素,越大越清晰也越大。
- 点「开始压缩」,或重新选图会自动重压。结果在下方预览,按「下载图片」存成 jpg,或「复制图片」进剪贴板;想换参数调完再点一次。
压缩图片转20KB能解决什么
它把「大图塞进小体积限制」这件麻烦事,变成一次本地操作,适合三类场景:
- 头像与缩略图:论坛头像常限 20KB,原图 320KB 直接传会被拒;压到 19.8KB 就能过审,肉眼几乎看不出差别。
- 邮件与表单附件:很多系统单附件限 20~50KB,把截图压到目标下,免得反复手动调。
- 网页与存储瘦身:批量把产品图压到小体积,加载更快、占空间更小,又不依赖任何在线压缩站。
本页不做的事:不保证「无损」压到 20KB(JPEG 是有损的,画质会随体积下降);不保留 PNG 透明通道(转 JPEG 后透明变白底);不把图片发到服务器,也不替你管理原文件。
原理和变量
① 用了哪个具体函数:核心用 Canvas 的 getContext('2d').drawImage 把图绘到画布,再用 canvas.toBlob(cb, 'image/jpeg', quality) 编码成 JPEG;质量参数在 0.1~1 之间,由本页逐步下调。
② 关键参数为什么这样取:先按「最长边」等比缩放,是因为限制长边比限制宽高更能保住构图;质量从 0.92 起、每次减 0.05,能在清晰度与体积间快速逼近;仍超目标才缩尺寸,尽量保住分辨率。
③ 遵循哪个标准:编码走浏览器原生 JPEG(ISO/IEC 10918)实现,不调用任何服务端接口或第三方库;输出是标准 JPEG 二进制,可被任意看图软件打开。
④ 输入怎么变成输出:读入一张 1200×800 的示例图 → 按最长边 1280 不缩放 → 从质量 0.92 编码,若超 20KB 降到 0.87、0.82……直到 ≤20KB → 输出预览与体积,如 19.8KB 的 jpg。
⑤ 边界与阈值:目标 1~500KB、最长边 32~4096;质量下限 0.1,再超就缩最长边到 85%(最低 48px);非图片文件、无法解码的文件会被拦下;超大原图首次编码会稍慢,属设备性能上限。
⑥ 常见误用的正确解释:压到 20KB 必然有损,别指望和原图一样清晰;PNG 透明区域转 JPEG 会变白底而非保留透明;原文件不会被改动,新图只存在于本页内存,需主动下载保存。
完整示例(数值仅作演示)
用「生成示例图」得到的 1200×800 蓝底样例:
- 目标 20KB、最长边 1280:不缩放,质量从 0.92 降到约 0.80 时体积降到 19.8KB,预览清晰可用。
- 若目标改 50KB:质量只需降到约 0.90,体积 49.6KB,画质更高。
- 若原图是 4000×3000 照片:先缩到最长边 1280,再压质量,最终约 19.9KB。
- 若坚持 20KB 但最长边只给 64:会一路缩到 48px 后尽力,可能仍微超,此时应放宽最长边。
这四组数字说明:目标与最长边共同决定清晰度,想更清楚就调大最长边或目标。
输入范围与对照表
压缩图片转20KB没有固定数值表,下面用「最长边 × 目标」的语义对照,帮你预判结果走向:
- 最长边 1280、目标 20KB:质量约 0.80,清晰、体积小。
- 最长边 1280、目标 50KB:质量约 0.90,更清楚。
- 最长边 640、目标 20KB:质量约 0.85,略糊但更小。
- 最长边 4096、目标 20KB:先大缩后压质,细节损失明显。
- 目标 1KB:质量压到 0.1 仍超则缩到 48px,几乎只剩色块。
- 目标 500KB:几乎原质,仅做格式转换。
记住:目标越小、最长边越小,画质损失越大;两者一起放宽才能保清晰。
结果边界和舍入
输出性质:结果是标准 JPEG 二进制(透明变白底),尺寸由最长边与原始比例决定,体积精确到字节、显示时取一位小数 KB。
什么时候会提示:没选图片就点压缩会提示先选图;目标或最长边越界会提示范围;非图片、解码失败会给出具体中文原因。
体积与清晰度:体积刚好处在目标附近(可能略小,不会明显超出);若算法到底仍微超,会如实显示最终体积并提示已尽力,不会谎报达标。
结果用途:这是本地生成的副本,原文件完好无损;正式使用前请瞄一眼预览,确认清晰度可接受再下载。
常见问题
压缩后的画质会变差吗?
会,因为 JPEG 是有损压缩,体积压得越小、最长边越短,损失越明显。要更清楚就把「目标大小」或「最长边」调大一点再压。
为什么透明背景变黑或变白?
JPEG 不支援透明通道,本页在绘制时先铺了白底,所以透明区域会变成白底,而不是保留透明。需要透明请改用 PNG 类工具。
原图会被改到吗?
不会。处理只在浏览器内存里生成新图,你的原文件原封不动;关掉页面新图也消失,记得点「下载图片」保存。
我的图片会被上传吗?
不会。读取、缩放、编码全在本地完成,可在 Network 面板复查,过程中没有任何请求发出,图片不出本机。
压不到正好 20KB 怎么办?
算法会尽量逼近但可能略小;若始终微超,说明当前最长边下已压到质量下限,需要放宽「最长边」或「目标大小」再试。
支持哪些格式?
读入支持 jpg、png、webp 等浏览器能解码的格式;输出统一为 JPEG,所以不适合需要透明或矢量的场景。
能批量压很多张吗?
当前一次处理一张。多张请逐张选择并下载;思路一致,本页侧重单张精确压到目标体积。
复制图片失败怎么办?
部分浏览器或权限下不支持剪贴板写图片,会提示改用「下载图片」。下载是通用方案,任何环境都能用。