事情是这样的,周末整理硬盘,发现去年全家去青海湖的照片文件夹整整365MB,老婆让我发给她,微信提示单文件不能超过100MB——连发都发不出去。
我盯着那个数字“365MB”,心想:这要是能压成25MB就好了,刚好微信能发,还不占手机空间。能不能压到十分之一都不到?
说实话,第一反应是怀疑,365到25,压缩率超过93%,这就像把一床厚棉被塞进一个巴掌大的真空收纳袋——你明知道物理上可行,但亲眼看见之前,总觉得会出岔子。
我决定试试。
压缩之前,先搞清楚那365MB里装了啥
费曼说,你没法真正理解一个东西,除非你能把它讲给奶奶听,那我先得弄明白:365MB这数字是怎么堆出来的。
打开文件夹一看,386张照片,清一色JPG格式,每张大概在600KB到1.5MB之间晃悠,还有5段1080P的短视频,每段30秒左右,加起来就占了将近200MB。
这里有个大多数人不知道的事儿:JPG本身就是压缩过的格式,你按快门的时候,相机已经把原始数据压过一轮了,所以当你跟人说“帮我把照片压缩一下”,你其实是在进行一次二次压缩——在已经拧干水分的毛巾上继续拧。
| 文件类型 | 原始大小 | 占总量比例 |
| 照片(386张JPG) | 约165MB | 45% |
| 视频(5段1080P) | 约200MB | 55% |
看见没,视频才是大头,我那“压到25MB”的目标,如果不动视频,基本是做梦。
真正管用的三招,没一个需要花钱买软件
网上搜“压缩”,跳出来的全是付费软件广告,什么“一键压缩99%”,看一眼就知道不靠谱——无损压缩是有数学极限的,超过极限的东西不是魔法就是骗局。
我老老实实用了三招,都是免费工具:
第一招:批量调整照片分辨率
青海湖的照片,相机拍出来分辨率是6000×4000像素,但在手机上、电脑屏幕上看,其实2000×1333就完全够了——除非你要放大洗成海报。
我把所有照片用ImageMagick命令行批量缩到2000像素宽:
(图1:ImageMagick批量处理前后文件大小对比示意图)
这步搞完,386张照片从165MB直接掉到42MB,肉眼看不出任何差别,因为屏幕就那么大。
第二招:视频重新编码
那5段视频每段200MB的码率,我看了下参数——比特率高得离谱,差不多17Mbps,网上流媒体4K也就这个码率了,我这1080P的视频用这么高完全浪费。
用HandBrake重新压了一次,把H.264编码改成H.265,比特率降到3Mbps,H.265这东西说白了就是一种更聪明的压缩算法,它会把画面里不变的部分(比如背景天空)少存一些数据,把变化的细节(孩子跑来跑去的脸)多存一些。
压完一看,5段视频从200MB变成了18MB,画质在手机上看几乎没区别。
第三招:打包格式选了7z
普通ZIP压缩对JPG和MP4文件基本没用——它们本身已经压缩过了,再压就像试图折叠一张已经叠好的纸。
但7z格式的算法更激进一些,我把已经缩小尺寸的照片和重新编码的视频一起打包成7z,选择“极限压缩”模式,最终文件:7MB。
365MB → 24.7MB,压缩率93.2%。
老婆凑过来看结果,问我:“孩子的脸还在吧?”
我打开一张照片放大到她眼前:“你看这睫毛,一根没少。”
压缩的边界在哪里:有损和无损的区别你得知道
这里头有个关键概念,我觉得得说清楚。
我这次用的是有损压缩——缩小分辨率那次,扔掉了像素;重新编码视频那次,扔掉了部分色彩信息,扔掉的这些东西,在当前观看条件下人眼感知不到,但它们确实不存在于新文件里了。
而无损压缩,比如把一个Word文档压成ZIP,解压之后和原来一模一样,一个标点都不差。
很多人混淆这两件事,看见“93%压缩率”就觉得什么文件都能这么压,不能,一个已经用JPG压过的照片,你再拿ZIP去压,可能连5%都压不出来,有时还会变大——因为压缩算法要额外加上解压需要的记录信息。
所以我得说清楚:我那个365MB到25MB的奇迹,是在允许画质轻微损失的前提下达成的,如果你要无损,绝无可能压到这个比例。
生活里怎么判断该压到多少
后来我反复试了几次,摸索出一个实用标准:
- 发微信/朋友圈:照片2000像素宽够用,文件控制在1MB以内完全看不出区别
- 存手机相册:3000像素宽留点放大余地,单张2-3MB很舒服
- 以后要打印或剪裁:保留原尺寸,别乱压
- 视频发微信:720P就行,码率2-3Mbps,一分钟大概20MB
- 视频存档:1080P,码率5-8Mbps,H.265编码最优
这些数字不是标准答案,但能当个起点,每个场景的要求不一样,你得自己拿眼睛当裁判。
小孩涂鸦和一张风景照的区别:内容决定压缩效率
有个好玩的现象我顺便说一句,同样是JPG照片,一张蓝天白云的风景照,因为画面大面积都是均匀渐变,压缩后能小很多;而一张孩子在游乐场拍的,背景里全是各种复杂形状的玩具、人群、栏杆,压完还是会比较大。
这是压缩算法的核心工作原理导致的——它寻找重复模式,简单画面重复多,压缩效率就高;复杂纹理画面,重复少,效率就低。
(图2:简单画面与复杂纹理照片压缩效率对比示意图)
所以如果你有一批照片要压缩,别拿张天空照测试完就以为所有照片都能压到那么小——碰到细节密集的照片,它会反弹回来。
文件夹里那几百兆真的需要留着吗
做完这次实验之后,我回头看了看自己硬盘里那些动辄几百MB的文件夹,发现很多我几年没打开过,照片拍了存着,视频录了扔着,总觉得“以后可能会用原图”。
实际上呢?上次我需要原图,是为了把一张全家福放大洗成24寸挂墙上,剩下的几千张照片,全都在手机和电脑屏幕上被缩放观看,高出的那些分辨率只是数字,不是记忆的重量。
但我还是没舍得全压,那些原片像一种承诺——承诺这些回忆经得起放大,经得起裁剪,经得起未来某个屏幕的考验,哪怕这个承诺我可能永远不兑现。
这是另一个话题了,回到压缩这件事:365MB到25MB,工具是现成的,原理是清楚的,操作门槛低得只需要一个下午,我没给孩子压掉任何一张脸,倒是清出了半个G的空间——以及一个让老婆觉得我“还挺能干的”的周末下午。




网友评论