把 JPEG 精确压到指定 KB 的纯浏览器算法。零依赖,两个函数。
线上体验:规格急救站 —— 考试报名照片一键达标工具
考试/政务报名系统对照片大小有硬性限制:
| 场景 | 要求 |
|---|---|
| 国家公务员考试 | 照片约 20KB |
| 教师资格证报名 | ≤200KB(295×413) |
| 研究生报名 | ≤100KB(480×640) |
| 各类报名附件 | ≤1MB |
普通压缩工具只能"压小一点",无法精确命中目标体积。更麻烦的是反向问题:照片太小(如 295×413 的证件照),画质拉满也只有 40KB,而系统要求"150KB 左右"——这时需要放大分辨率再压。
<script type="module">
import { hitTarget, hitExact } from './jpeg-hit.mjs'
// 场景1:不超过 30KB(国考照片)
const blob = await hitTarget(canvas, 30 * 1024)
// 场景2:精确命中 150KB(低分辨率自动放大重采样)
const blob2 = await hitExact(canvas, sourceImage, 150 * 1024)
// 下载
const a = document.createElement('a')
a.href = URL.createObjectURL(blob2)
a.download = 'photo.jpg'
a.click()
</script>- 上限模式
hitTarget:二分搜索 JPEG quality(0.05~0.95),7 轮内收敛到目标体积以下的最大画质点。 - 精确模式
hitExact:先用 quality 0.9 探测画布能达到的最大体积;不足目标时按 1.3× 步进放大画布重采样(上限 4×),再从上下两侧二分夹逼,取离目标最近的一侧。
MIT · 由 规格急救站 提取开源