WXImageCompress
描述
圖片作為App中重要的一個(gè)元素,非常具有表現(xiàn)力,圖片既要讓用戶能看清楚,又能讓發(fā)布圖片的用戶能快速的上傳。所以開發(fā)者要對(duì)圖片進(jìn)行裁切和質(zhì)量壓縮。但是裁切尺寸質(zhì)量壓縮比設(shè)置成多少卻很難控制好,如果設(shè)置不當(dāng)會(huì)導(dǎo)致圖片顯示效果很差。
微信是一個(gè)很好的參照物,被大家廣為使用并接受。這個(gè)擴(kuò)展就是通過發(fā)送微信朋友圈和聊天會(huì)話發(fā)送了大量圖片,對(duì)比原圖與微信壓縮后的圖片逆向推算出來的壓縮算法。
策略算法
圖片尺寸
- 寬高均 <= 1280,圖片尺寸大小保持不變
- 寬或高 > 1280 && 寬高比 <= 2,取較大值等于1280,較小值等比例壓縮
- 寬或高 > 1280 && 寬高比 > 2 && 寬或高 < 1280,圖片尺寸大小保持不變
- 寬高均 > 1280 && 寬高比 > 2,取較小值等于1280,較大值等比例壓縮
注:當(dāng)寬和高均小于1280,并且寬高比大于2時(shí),微信聊天會(huì)話和微信朋友圈的處理不一樣。
朋友圈:取較小值等于1280,較大值等比例壓縮
聊天會(huì)話:取較小值等于800,較大值等比例壓縮
圖片質(zhì)量
經(jīng)過大量的測(cè)試,微信的圖片壓縮質(zhì)量值 ≈0.5
UIImageJPEGRepresentation(resizeImage, 0.5)!
效果對(duì)比
original | this | |
---|---|---|
1500 * 4000, 2.5MB | 800 * 2134, 325KB | 800 * 2134, 306KB |
960 * 600, 210KB | 960 * 600, 147KB | 960 * 600, 147KB |
800 * 1280, 595KB | 800 * 1280, 140KB | 800 * 1280, 142KB |
1080 * 1920, 1.8MB | 720 * 1280, 139KB | 720 * 1280, 140KB |
640 * 1136, 505KB | 640 * 1136, 68KB | 640 * 1136 69KB |
4000 * 3000, 497KB | 1280 * 960, 140KB | 1280 * 960, 139KB |
2560 * 1600, 232KB | 1280 * 800 112KB | 1280 * 800, 112KB |
800 * 2138, 307KB | 800 * 2134, 649KB | 800 * 2138, 599KB |
3351 * 1430, 386KB | 1874 * 800, 296KB | 1875 * 800, 286KB |
3000 *1300, 458KB | 1846 * 800 322KB | 1847 * 800, 307KB |
8323 * 5793, 19.67MB | 1280 * 890, 428KB | 1280 * 891, 465KB |