Developers
与本站同源的压缩引擎,一个 POST 接口即可使用:mozjpeg 压缩 JPEG、libimagequant 量化 PNG、原生 WebP / AVIF 编码,支持指定目标大小、GIF 动图、HEIC 转码与无损模式。 无需注册与密钥,限流 60 次/分钟/IP。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 图片文件,≤ 25MB,支持 JPG / PNG / WebP / AVIF / GIF / HEIC / TIFF(BMP 请在网页端使用,浏览器会自动转码) |
| quality | number | 否 | 压缩等级 1-100,默认 75 |
| format | string | 否 | auto(保持原格式)/ jpeg / png / webp / avif,默认 auto |
| maxDimension | number | 否 | 最长边像素限制,等比缩小不放大,0 = 保持原尺寸 |
| width | number | 否 | 目标宽度 px(0-10000),与 height 搭配按 fit-inside 等比缩放,优先于 maxDimension |
| height | number | 否 | 目标高度 px(0-10000),与 width 搭配按 fit-inside 等比缩放 |
| scale | number | 否 | 按比例缩放 0.05-1(如 0.5 = 缩小到 50%),与 width/height 互斥 |
| targetSize | number | 否 | 目标大小(KB),服务端自动调节力度压到目标以内 |
| lossless | string | 否 | 传 1 启用无损模式(仅 PNG / WebP / AVIF,与 targetSize 互斥) |
| keepExif | string | 否 | 传 1 保留 EXIF 拍摄信息(默认删除以保护隐私) |
成功时返回压缩后的图片二进制流(Content-Type 与实际格式一致),统计信息通过响应头返回:
| 错误码 | 含义 |
|---|---|
| 400 | 缺少文件或请求解析失败 |
| 413 | 文件超过 25MB 上限 |
| 415 | 不支持的图片格式 |
| 422 | 图片解析或压缩失败(文件可能已损坏) |
| 429 | 触发频率限制(60 次/分钟/IP),请稍后重试 |
cURL
curl -X POST https://www.pixvise.com/api/compress \
-F "file=@photo.jpg" \
-F "quality=75" \
-F "format=webp" \
-o photo-min.webp -D -JavaScript(fetch)
const fd = new FormData();
fd.append('file', file); // File / Blob
fd.append('quality', '75');
fd.append('format', 'webp');
fd.append('targetSize', '200'); // 可选:压到 200KB 以内
const res = await fetch('https://www.pixvise.com/api/compress', { method: 'POST', body: fd });
if (!res.ok) throw new Error((await res.json()).error);
const blob = await res.blob(); // 压缩后的图片
console.log('节省比例', res.headers.get('X-Saved-Ratio'));Python(requests)
import requests
with open('photo.jpg', 'rb') as f:
res = requests.post(
'https://www.pixvise.com/api/compress',
files={'file': f},
data={'quality': 75, 'format': 'webp'},
)
res.raise_for_status()
with open('photo-min.webp', 'wb') as out:
out.write(res.content)
print('节省比例', res.headers.get('X-Saved-Ratio'))官方 npm 包 pixvise-sdk封装了请求、错误处理与响应头解析,Node.js ≥ 18 与现代浏览器可直接使用:
安装与使用
npm install pixvise-sdk
import { readFile, writeFile } from 'node:fs/promises';
import { Pixvise } from 'pixvise-sdk';
const pixvise = new Pixvise(); // 默认 https://www.pixvise.com
const input = await readFile('photo.jpg');
const result = await pixvise.compress(input, 'photo.jpg', {
quality: 75,
format: 'webp',
targetSize: 200, // 可选:压到 200KB 以内
});
await writeFile('photo.webp', Buffer.from(await result.blob.arrayBuffer()));
console.log(result.compressedSize, result.savedRatio);不想写代码时用 pixvise-cli:终端里批量压缩文件、目录或 glob,支持全部压缩参数:
安装与常用命令
npm install -g pixvise-cli # 或 npx pixvise-cli ...
# 批量压缩目录,转 WebP,输出到 out/
pixvise images/ -q 75 -f webp -o out/
# 报名照片:压到 200KB 以内(二分画质)
pixvise id-photo.jpg --target-size 200
# 电商主图:最长边 2000px + AVIF
pixvise "products/*.jpg" --max-dimension 2000 -f avif
# 原地覆盖(谨慎使用)
pixvise "*.jpg" --overwrite