同一段视频 9 种压法:设得越「清楚」,文件反而越大
同一段 63 秒视频 9 种压法实测:设得越清楚,文件越大画质没变好。

先说结论:同一张手机壁纸,换个存法体积能从 674.9 KB 掉到 122.9 KB;要是按「最高质量」重存一遍,反而涨到 775.7 KB。我站上 15 张配图整体从 2260.7 KB 变成 575.6 KB,是原来的四分之一,图上的字机器还读得一字不差。
前几天我给手机找了 9 张壁纸,尺寸都是 1080×2340,正好贴手机屏。单张 675 KB 上下,9 张打包出去 6 MB 多,往外发要等一会儿。
同一时候我站上有 15 张配图,都是我自己做的卡片图,带中文和数字,合计 2260.7 KB。
两件事其实是同一个问题:压到多小,图上还能看清。我没去翻教程,直接在本机用 Python 的图片库(Pillow 10.2.0)跑了一遍,原图只读不动。
拿「壁纸-01.jpg」(1080×2340,674.9 KB)当样本,同一份画面用不同方式重新存:
| 存法 | 体积 | 相对原图 |
|---|---|---|
| JPEG 质量 95 | 775.7 KB | 114.9% |
| JPEG 质量 85 | 420.6 KB | 62.3% |
| JPEG 质量 75 | 311.7 KB | 46.2% |
| JPEG 质量 60 | 200.8 KB | 29.8% |
| JPEG 质量 40 | 134.4 KB | 19.9% |
| WebP 质量 85 | 311.7 KB | 46.2% |
| WebP 质量 75 | 164.7 KB | 24.4% |
| WebP 质量 60 | 122.9 KB | 18.2% |
| PNG(无损) | 3156.0 KB | 467.6% |
表里有四处值得记住。
质量调高不一定好。质量 95 存出来 775.7 KB,比原图还大 100.8 KB。原图本身已经被压过一次,再按最高质量重存,等于把压缩留下的痕迹又描一遍,体积涨了,清晰度不涨。
PNG 装照片是自找麻烦。3156.0 KB,是原图的 4.7 倍。PNG 的强项是色块和文字这种边界干净的画;照片每个点颜色都不一样,它就存不动。
WebP 更划算。体积一样时,WebP 挂的质量档更高:表里 311.7 KB 出现两次,一次是 JPEG 质量 75,一次是 WebP 质量 85。
渐进式是白捡的。JPEG 质量 85 加上「渐进式+优化」两个开关,从 420.6 KB 降到 390.5 KB,省 30.1 KB,质量参数一个没动。
带文字的截图,情况和照片不一样。我把它们全部按 WebP 质量 85 重存:
| 文件 | PNG | WebP 质量 85 |
|---|---|---|
| fig_apk-build-without-gradle.png | 248.6 KB | 62.9 KB |
| fig_android-ui-test-on-server.png | 204.2 KB | 50.9 KB |
| fig_excel-number-precision-trap.png | 191.2 KB | 49.1 KB |
| fig_sitemap-indexnow-get-indexed.png | 191.6 KB | 47.1 KB |
| fig_sqlite-chinese-fulltext-search.png | 194.3 KB | 53.1 KB |
| 15 张合计 | 2260.7 KB | 575.6 KB |
合计是原来的 25.5%,省下 1685.0 KB。
只看体积不够,还得看糊没糊。同一张卡片(1200×881,191.6 KB)分别重存,再逐点跟原图比差,差越小越接近原图:
| 存法 | 体积 | 平均每点差 | 最大单点差 |
|---|---|---|---|
| JPEG 质量 90 | 107.0 KB | 0.759 | 73 |
| JPEG 质量 85 | 90.8 KB | 0.863 | 78 |
| JPEG 质量 75 | 71.6 KB | 1.022 | 95 |
| WebP 质量 85 | 47.1 KB | 0.794 | 79 |
| WebP 质量 75 | 35.9 KB | 0.952 | 83 |
WebP 质量 85 的体积是 JPEG 质量 85 的一半,差还更小。这一档我定成默认。
把那张卡片一路往下压:
| 质量档 | JPEG | WebP |
|---|---|---|
| 50 | 55.0 KB | 29.5 KB |
| 35 | 47.1 KB | 25.2 KB |
| 25 | 41.1 KB | 22.3 KB |
| 15 | 34.1 KB | 19.6 KB |
每一档我都丢给一个能看图的模型(qwen3-vl-plus),让它把图里的字念出来,只查 10 个关键数字(410、404、200、1.99、30、5081、63、32、202、422)念对没有。八个档位全部 10 个全对,最小的 19.6 KB 那档也没标「看不清」。
这里得说句老实话:机器读对,不等于人眼看着舒服,也可能它是靠上下文猜的。所以我没把默认压到最低那一档,停在 WebP 质量 85——体积已经是四分之一,余量留给人眼。
顺手在本机 Chrome(154.0.8037.57)里打开压出来的 .webp,宽高照样是 1200×881,页面里的画布也能导出 WebP,显示这一环不用操心。
from PIL import Image
im = Image.open('原图.jpg').convert('RGB')
im.save('卡片图.webp', 'WEBP', quality=85) # 卡片图、要发给别人的图
im.save('照片.jpg', 'JPEG', quality=85, progressive=True, optimize=True)
同一段 63 秒视频 9 种压法实测:设得越清楚,文件越大画质没变好。
三个老推送接口都死了,我用 IndexNow 把新文章推给搜索引擎
表格里的数字,程序读出来可能和眼睛看到的不是一回事