微信的压缩算法一直都在修改变动,图片的清晰度和饱和度与太多因素相关,不同手机型号(手机分辨率不同),图片上传后的质量也会略微不同,微信压缩图片是为了提高加载速度,减轻服务器的压力。
在微信公众号后台上传图片,我们上传的图片无法完美适配不同型号的手机,也无法完全规避微信压缩原则,不知道微信的压缩算法,我们怎样做才能最大程度有效保持图片质量?
方法:
- 能用 png 就用 png
- 静图图片原始尺寸宽度保持为1080 px,以免被压缩
还有其他建议和原理,继续往下看 ↓↓↓
微信图片上传要求
图片格式:bmp、png、jpeg、jpg、gif格式
图片大小:任意单张图片必须小于 5M,其中 gif 小于 2M
从本地上传图片到微信公众号后台都会被压缩,此前微信官方的图片规则建议是
「大图片建议尺寸:900 * 500像素,但上传后图片会自动压缩为宽 640 像素」
此种说法目前已经不成立,图片并不会自动压缩到 640 像素,可自行验证。
其实在 PC 端和手机端查看微信公众号图片,如果所有图片分辨率都超过阅读区域的分辨率,比如大于手机屏幕分辨率的图片,所有图片都会以相同大小显示,即使原本图片分辨率像素不一样。
所以顺着这个思路想,我们可不可以通过调整图片分辨率或者改变图片格式,来达到最佳的压缩效果?
调整图片分辨率
我们从常用的 jpg、png、gif 这三种图片来分析,经过多次反复测试,终于发现了图片在微信后台压缩的规律。可以在PC端浏览器审查元素。
由于知乎会对图片进行再次压缩,很多图片色彩上的差别无法凭借肉眼分辨,区别明显的清晰度还是可以对比看出的,根据下面测试得到的结论,具体情况自己试验哦!
jpg图片压缩:
- jpg 宽度像素 ≤ 1080,图片不被压缩
- jpg 宽度像素 >1080,图片被压缩成 1080
png图片压缩:
png 和 jpg 图片压缩相同
- png宽度像素 ≤ 1080,图片不被压缩
- png宽度像素 >1080,图片被压缩成 1080
gif图片压缩:
gif 帧数>60,图片不被压缩
gif 帧数≤ 60时,
- 图片宽度像素 > 640,图片被压缩成 640
- 图片宽度像素 ≤ 640,图片不被压缩
gif 帧数=1帧,1帧的 gif 图片相当于静图输出为 gif 格式
- 宽度像素 ≤ 1080,图片不被压缩
- 宽度像素 >1080,图片被压缩成 1080
调整图片格式
根据上面得出的图片分辨率结果,发现在小于等于1080 px的范围内,图片尺寸越大,图片越清晰,而宽度大于1080 px的图片容易被压缩,所以我们在插入图片时尽量输出宽度为1080px的图片,不同格式的图片适合不同类型的图片场景。
图片大小:
png > gif > jpg (正常情况下)
图片透明度效果:
png > gif > jpg(不支持)
色彩丰富程度:
jpg > png(png-24>png-8)> gif
图片清晰度:
png > gif > jpg
我们同样可以做试验,选择相同尺寸的图片,输出不同格式,看看哪种效果更好。
通过对比发现,每组图片的差异都不太明显,肉眼只能看出细微的差别。
其中 jpg 图片被压缩得最厉害,png 质量最好,色彩简单的图片,输出 png-8格式,色彩丰富的摄影图和色彩鲜明的设计图,输出 png-24格式。
改变图片格式的方法:打开photoshop→点击左上角【文件】→【导出】按钮选择存储为 Web 所有格式→最后点击存储
举例截图:
jpg格式
png格式
gif格式
仔细看红色部分,jpg 图片被压缩得最模糊,png 和 gif 图片质量保存相对要好一些。
插画:
同一张图片只有在手机上放大查看才能发现不同的压缩情况。
png图片最光滑质量最好,jpg图片其次,gif图片格式很多噪点质量最差,手机上查看效果比知乎上传后更明显。
出现这种情况的原理是什么?
图片原理
gif :采用无损压缩,相比无压缩的 bmp 格式,尺寸较小,支持透明和动画,但 gif 最多只能表达256 种颜色,所以色彩复杂、细节丰富的图片不适合保存为 gif 格式,色彩简单的 logo、icon、线框图适合采用 gif 格式。
jpg:有损压缩,支持1600W多(2^24)的颜色,在重复复制保存编辑图片时,图片质量会下降, jpg 非常适合色彩丰富和渐变色的图片,但 jpg 不适合icon、logo,相比 gif 和 png-8,jpg 文件大小没有任何优势。
png:采用无损压缩,相比 gif,对透明的支持更好( png 支持对原图像定义 256 个透明层次,使得图像的边缘能与任何背景平滑融合),尺寸也更小,如果需要更高品质色彩和丰富细节的表达,需要导出 png-24,但 png-24比 png-8的文件更大,不支持动画。在保证图片清晰、逼真的前提下,优先选择 png格式的图片。
- png-8 指的是 8 bits,相当于用 2^8(2 的 8 次方)来存储图片颜色种类,意思是 png-8 能存储 256 种颜色,如果一张图片颜色种类较少,存为 png-8 格式较为合适。
- png-24 指的是 3个 8 bits,分别来表示 RGB 值,也就是说,png-24可以表达256*256*256(16777216)种颜色,所以 png-24 比 png -8 表达的色彩更丰富,相对图片占用的空间也大些,比 jpg 要大很多。
结论
目前并不存在微信不会压缩 gif 图片的说法。
* 静图:
微信对 png 图片更友好,当图片出现压缩不清晰时,导出宽为 1080 px 的 png-24 格式图片。
* 动图:
帧数大于 60,动图宽度最大不超过1080 px
帧数小于等于 60,动图宽度最大不超过640 px
当然也不排除最后上传时, gif 格式图片效果最好的情况,毕竟影响图片压缩质量的因素太多,总之优先考虑万能输出 png,自己多次尝试输出不同格式的图片,发现最理想的效果。
出现图片太大无法上传,可以利用 phtoshop 降低图片尺寸,或者在 TingPNG 网站上压缩图片。
如果有更好的方法,欢迎交流指正~
原创文章,作者:壹伴助手,如若转载,请注明出处:https://yiban.io/blog/192
评论列表(2条)
学到了
准备做!谢谢,看了之后大概可以避免很多坑了