
你的网站打开慢,Google PageSpeed Insights给你一个建议:“压缩图片”。你看了看,首页几张图片加起来快10MB。一张相机原图2MB,直接往网页里扔。首屏加载光等图片就好几秒,用户早跑了。
之前聊过CDN、聊过Nginx缓存,今天从源头解决问题——把图片本身变小。
据统计,图片资源通常占据网页总大小的60%以上。一个未压缩的PNG图片可能2-3MB,压缩到200KB,用户几乎看不出区别,但加载时间从2秒降到0.2秒。今天推荐几款免费工具,附一键脚本,让你批量压缩图片。
图片压缩的核心原理:在体积和画质之间找平衡
图片压缩本质是一个取舍:体积要小,画质不能糊。
有损压缩:丢掉一些人眼不敏感的细节。比如JPEG质量从100调到80,体积可能减少70%,但你看不出区别。适合照片类内容。
无损压缩:优化存储方式,不损失任何画质。比如PNG用更高效的算法重新编码,体积减小但画质不变。适合图标、截图、需要透明背景的图片。
格式升级:把JPEG/PNG转成WebP或AVIF。WebP在同质量下体积比JPEG小25%-34%,AVIF比WebP再小30%。浏览器支持度方面,WebP已达95%以上,可以放心用。
免费命令行工具:Linux服务器批量压缩
如果你手头有一堆图片需要压缩,或者想做自动化处理,命令行工具是最快的方式。
工具清单
| 工具 | 适用格式 | 特点 | 安装命令 |
|---|---|---|---|
| jpegoptim | JPEG | 有损/无损,可指定质量上限 | apt install jpegoptim |
| optipng | PNG | 无损压缩,多级优化 | apt install optipng |
| pngquant | PNG | 有损量化,体积减少70%+ | apt install pngquant |
| cwebp | PNG/JPEG→WebP | 格式转换,高压缩率 | apt install webp |
安装所有工具
bash
apt update apt install -y jpegoptim optipng pngquant webp
单文件压缩示例
JPEG压缩到80%质量:
bash
jpegoptim --max=80 image.jpg
PNG无损优化(最高等级):
bash
optipng -o7 image.png
PNG有损量化(256色):
bash
pngquant --quality=65-80 image.png --output image-compressed.png
转WebP格式:
bash
cwebp -q 80 image.png -o image.webp
一键批量压缩脚本
把下面的脚本保存为compress_images.sh,放在图片目录下执行。
bash
#!/bin/bash
# 图片批量压缩脚本
# 用法: chmod +x compress_images.sh && ./compress_images.sh
echo "开始批量压缩图片..."
# 压缩所有JPEG(质量75%)
find . -type f \( -name "*.jpg" -o -name "*.jpeg" \) | while read file; do
echo "压缩: $file"
jpegoptim --max=75 --strip-all "$file"
done
# 压缩所有PNG(无损优化+有损量化)
find . -type f -name "*.png" | while read file; do
echo "处理: $file"
# 先无损优化
optipng -o7 "$file"
# 再生成WebP版本
cwebp -q 75 "$file" -o "${file%.png}.webp"
done
echo "压缩完成!"
保存后执行:
bash
chmod +x compress_images.sh ./compress_images.sh
效果:原图2MB的JPEG压缩到约400KB;原图1MB的PNG压缩到约200KB,同时生成WebP版本。
GUI工具:不用敲命令也能批量压缩
如果你不想碰命令行,这几个图形化工具有免费版,支持拖拽批量处理。
TinyPNG/TinyJPG(在线+API)
最知名的在线压缩服务,压缩率高、画质损失小。网页版单次最多20张,单文件不超过5MB。注册API可获每月500次免费压缩,适合集成到自己的工具链。
RIOT(Windows)
XnConvert(跨平台)
压缩参数怎么调?三个经验值
| 场景 | 推荐格式 | 质量参数 | 预期体积 |
|---|---|---|---|
| 照片/文章配图 | WebP或JPEG | 75-85% | 原图的20%-30% |
| 图标/UI元素 | PNG-8或WebP | 无损 | 原图的50%-70% |
| 缩略图 | WebP | 65-75% | 原图的10%-20% |
JPEG质量不建议超过85%:85%再往上,体积增加明显但画质提升肉眼几乎看不出。
一个真实案例
一个摄影博客,每篇文章配20张图,每张原图约3MB,一篇文章光图片就60MB。用户打开慢不说,每月CDN流量费上千元。
用jpegoptim批量压缩到75%质量,每张图从3MB降到600KB,压缩80%。配合转WebP,降到400KB。一篇文章从60MB降到8MB。用户说“网站变快了”,流量费降了70%。
最后一句
图片压缩不是玄学,是数学。同样的画质,体积可以差好几倍。
今天在你的服务器上跑一遍apt install jpegoptim optipng pngquant webp,再把我给的脚本存下来。以后每次上传图片,先压缩再上线。
你的用户不会知道你做了什么,但他们会发现“这个网站挺快”。这就够了。




