TinyPNG
感知量化算法压缩 PNG/JPEG/WebP/AVIF
简介
TinyPNG 由荷兰阿姆斯特丹 Voormedia BV 出品,约 2012 年上线。基于感知量化算法对图片进行有损压缩,覆盖 PNG / JPEG / WebP / AVIF / JXL。提供网页拖拽、Tinify API、WordPress / Photoshop / Magento 插件。累计压缩超过 65 亿张图片,全球 50,000+ 公司使用。
核心功能
- 感知量化压缩
- PNG/JPEG/WebP/AVIF/JXL
- Tinify API
- WordPress 插件
- Photoshop 插件
优缺点
优点
- 感知量化算法,压缩稳定且画质几乎无损
- API 月免费 500 次,对中小项目够用
- 多语言官方 SDK + REST API,接入流水线简单
- 同一服务覆盖 PNG / JPEG / WebP / AVIF / JXL 多格式
缺点
- 网页端单文件 5MB 上限、单次 20 张
- 有损压缩,对极致画质场景不适合
- 无自托管版本,依赖云端处理
详细介绍
它做的事
TinyPNG 不做"无损压缩"。它的核心算法是**感知量化(perceptual quantization)**——根据图片内容选择压缩参数,让你看不出区别但文件大幅变小。这与单纯缩小尺寸或调低 JPEG 质量不一样。
两种使用方式
### 1. 网页端
打开 tinypng.com 拖拽图片即可,**无需注册**。限制:
- 单次最多 20 张
- 单张文件 ≤ 5MB
- 输出 PNG / JPEG / WebP / AVIF / JXL 多格式可选
适合一次性处理少量图片。
### 2. Tinify API(开发者)
接入 CI/CD 或前端构建流程:
| 月度调用量 | 单价 | |---|---| | 0–500 次 | 免费(无需绑卡) | | 500–10,000 次 | $0.009 / 张 | | 10,000+ | $0.002 / 张 | | 企业 | 可签固定月费 |
官方 SDK 覆盖:Ruby / PHP / Node / Python / Java / .NET,REST API 直接调也很简单。
为什么不用 ImageOptim / ShortPixel
| 工具 | 部署 | 算法 | 适合 | |---|---|---|---| | **TinyPNG** | 云端 SaaS | 感知量化 | 跨境独立站 / API 接入 | | ImageOptim | macOS 本地 | 多算法组合 | Mac 一次性处理 | | ShortPixel | 云端 SaaS | 多种压缩选项 | WordPress 重度用户 | | Squoosh | 浏览器本地 | 多算法 | 调试 / 单张精修 |
TinyPNG 的差异化是 API 简单、SDK 丰富、压缩稳定,适合接入流水线。如果你只是 Mac 上偶尔压几张图,ImageOptim 就够了。
跨境独立站的实操场景
- **Shopify / Webflow 商品图**:上传前批量压一遍,省下 30–70% 大小
- **WordPress 站**:装 TinyPNG 插件自动压新图,老图也能批量
- **CI/CD**:构建时把 src 图自动压缩并替换,每月几百张免费够用
- **API 滥用**:CI 跑多次 build 重复压同一张要做缓存,避免每次扣额度
注意
- 服务器在荷兰,国内大批量上传速度受网络波动影响
- API 按调用次数计费,CI 中要做缓存避免重复扣费
- 上传图片到第三方云端,敏感素材自行评估合规
- 有损压缩,对极致画质场景不适合(用 ImageOptim 等无损工具)
公司基本面
- Voormedia BV,荷兰阿姆斯特丹
- TinyPNG 服务约 2012 年上线
- 累计压缩 65 亿+ 张图片
- 全球 50,000+ 公司与开发者使用
常见问题
TinyPNG 是真的免费吗?
网页端拖拽不限次免费(单次 20 张 / 单张 5MB)。API 每月前 500 次免费,超出按张计费($0.009 / 张)。
压缩后画质会损失吗?
理论上是有损压缩,但感知量化算法能让 95% 的场景看不出区别。需要无损可以用 ImageOptim、Squoosh 等替代。
WordPress 怎么用?
装 Compress JPEG & PNG images 官方插件,绑定 API key(免费 500 次),新图自动压缩,老图可批量处理。
能压缩 GIF 吗?
官方文档不直接支持 GIF。GIF 优化建议用 ezgif.com 或 ImageOptim。
中国大陆访问怎么样?
服务器在荷兰,国内访问基本稳定但大批量上传速度会受影响。CI/CD 接入建议做请求缓存。