看来微信为了应对全中国数以亿计的微信用户,节省服务器存储空间会将我们的图片进行压缩,而微信的压缩逻辑是将原图较短一边的像素固定压缩至1080像素。
那么有没有一种可能这个短边像素也有界限呢?带着疑问,我们进行了统计方法,首先我们从3000的短边像素图片开始测试,这一次我们一共测试了3000、2500以及2000短边像素的图片。
从结果来看,结果微信压缩的照片还是会将短边像素压缩至1080,看来微信发图最短像素就是1080像素了?而这1080像素不正是手机目前的分辨率吗?所以在这里四三猜想会不会与手机分辨率有关呢?
为了验证这个猜想四三经过一番友好交(da)涉(jia),从同事那里借来了他宝贝的2K分辨率安卓手机,同样将一样的测试图片发布朋友圈后,再导回到电脑里进行查看。
果然要用魔法才能击倒魔法,经过这一轮测试居然有一张图的短边像素突破了1080像素,进阶到了2020像素
,所以为了排除这是个例,我们又用另外一组原图进行测试,结果依旧是这样子。
为了得到更靠谱的答案,四三又用另外一台安卓手机进行了测试,还是老样子将上面的2张原图裁切成不同的大小,通过发朋友圈再转回电脑的操作。
所以微信短边压缩还是有一个阀值的,只是四三自用的安卓手机碰巧出了BUG测试不出来。。。
而上面我们也发现在短边像素2000至2500的区间会有危险最低压缩值,而且比例可能会大于或等于2:1,接下来就是一系列的摸(shi)索(cuo),我们最终得到只有原图比例大于等于2:1,并且原图的短边像素不大于2262像素时,微信不会裁剪分辨率的结论,具体的裁切效果可以直接跳到第四部分查看。
因为我们日常使用的图片是位图,其像素信息是固定的,不会增加或者减少,所以在压缩像素时,从高分辨率压缩到低分辨率,就会发生“降采样”(或“下采样”)。
对于一副图像I尺寸为M*N,对起进行s倍下采样,即得到(M/s)*(N/s)尺寸的分辨率图像,当然,s应该是M和N的公约数才可以,如果考虑是矩阵形式的图像,就是把原始图像s*s窗口内的图像编程一个像素,这个像素点的值就是窗口内所有像素的均值或者最大值,也就是Pooling池化操作等
而降采样的有关公式:Pk= Σ Ii/ s2
目前我们使用的图形大多为矩阵形式,就是把原始图像s∗s窗口内的图像变成一个像素,这个像素点就是窗口内所有像素的均值,近两年,出现了很多避免降采样时减少画质损坏的技术,所以目前微信的压缩算法效果比过去还是能肉眼看出提升的。
而原图经过微信裁切后,输出的图片一般都会被抹去exif信息,但是照片的格式会不会影响微信的压缩质量呢?
因为不同格式的图片所包含的色深等信息不尽相同,带着疑问,我们将.HEIC、.PNG、.JPG三张不同格式的照片进行测试,依次上传朋友圈。
但是事实上,微信还是奉行“众生平等”,各种不同格式的照片都被它压缩到了1080像素。
而这三张图放大后查看,细节上也没有很大的区别,所以目前对于朋友圈的照片无论是.png还是.HEIC等格式,都会统一被压缩成.JPG格式照片,更不会影响微信压缩质量。
2.Android与iOS有没有区别?
在微博上也有人说iOS端的微信朋友圈图片要比安卓端的清晰,作为谣言终结者的四三当然也要继续求证了。
这一次我选用的是一台安卓手机与iPhone6 Plus作为测试机型,依旧是老样子在朋友圈上传同一张照片,然后下载回本地查看~
安卓(左边)、iPhone(右边)
通过这两幅照片放大局部进行对比,基本没有什么太大的差别。而但从文件来看,从iPhone导回来的图片(327KB)还要比安卓端(333KB)的少了8KB。
安卓(左边)、iPhone(右边)
如果一定要来找茬,那也只能说到天空颜色压缩的差别,天空部分蓝色要比安卓的灰了一点,而安卓微信导回来的照片整体会更加明亮一点而已~
但是我还发现了一个问题,那就是如果用安卓手机下载苹果手机发送朋友圈的照片,会将Adoble RGB颜色文件压缩为sRGB,这或许能说明为什么两者颜色为什么会不同吧。
总的来说,iPhone和安卓虽然会有点差距,但没有出现肉眼可见的差别,只有你放大到几倍才能发现差距。
那么我们究竟如何发送高清的朋友圈图片呢?
3.如何钻空子,发高清照片?
1.主动降低短边分辨率
既然我们已经知道微信朋友圈压缩原理,那么我们可以通过主动降低、迎合标准来绕过压缩!
这里我推荐手机用户可以使用PicsArt进行降分辨率,点击下放菜单“工具”,选择调整图片大小,然后建议将这张照片的短边设定为1080。
因为PicsArt会按比例降低我们的分辨率,所以完全傻瓜式的操作更适合我们,而两者的对比可以查看下图。
OK,接下来让我们放大进行具体的对比吧,我们主动降分辨率的图可以在暗部(山峦)处保留更多的暗部细节,而原图经过微信压缩后,放大后看能用肉眼看出马赛克,所以这一个办法是可行的。
2.自动裁切
前面既然已经得知,微信在分辨率方面的压缩是以短边压缩至1080px为准,那请大家看下面这个实验!
我们将一张原尺寸为6720x4480像素的图按画幅裁成了横幅图片,然后分别上传朋友圈。结果是,原尺寸的照片长边被等比例压缩至2160像素,而主动裁剪后的照片长边压缩后达到了2234像素。
这就意味着,主动裁剪的上传照片相比前者整体像素量要优秀,只要你能够接受画面画幅变小。这也应证了主动裁剪上传比上传原图要更清晰。
4.谣言终结时间
1.先收藏然后分享至朋友圈能提高照片质量?
之前有公众号说通过发送原图给自己,然后将图片收藏,再去收藏中找到这张图片,长按选择分享至朋友圈。
依旧是上面测试用的6720x4480分辨的原图发送给自己,收藏后再从收藏夹中先保存一次至本地,然后选择分享至朋友圈。
结果发现,将原图收藏后,图片依然是原始分辨率6720x4480,但从收藏分享至朋友圈后,图片的分辨率依然被压缩至了2160x1080。
这个图的分辨率大小与将原图直接发朋友圈无异类,所以通过收藏再分享并不可行。
2.原图上传微博,然后再保存到相册
有人传言说把原图上传到微博,然后再保存到相册(不用点原图下载),再发朋友圈可以获得比直接原图发朋友圈更清晰的效果,为了验证四三又开始了实验。
但是通过这个方法得出的图片与原图直接发朋友圈并没有太大差别,而且分辨率也是变更为了1620X1080像素,比起原图裁切还要低,而且还添加了一个微博水印。
所以如果要发高清的朋友圈图片,还是老老实实的自己手动降低分辨率或者是主动裁切要来得真实。
总结
如果你问我分享的照片更加清晰有意义吗?
那我只能回答你有意义。因为我们分享的图片记录了日常的生活,如果几十年后我们重温这些照片,不会因为算法压缩而看到一堆马赛克,这或许是四三今天写这篇文章的主要动力了。
好了,感谢看到结尾的各位,当然如果能点个赞或者留下评论也是极好(疯狂暗示).希望疫情赶紧过去,大家带上手机去好好的记录生活吧。