手機QQ保存圖片作為表情會被壓縮,質量變差還越壓縮越大?其目的究竟為了什麼

這是一張原圖,瓜皮好可愛_(:3」∠)_

作為一個瓜皮控,肯定不會放過把它存成表情的機會的,那麼打開手機QQ,長按此圖片,添加為表情。

一次不太明顯的失真出現了,雖然看不大出來,但對比一看,明顯覺得鼻子的肉色變淡了。

於是這張圖發出去,被其他人看到,好可愛!長按圖片,保存為表情。

已經明顯出現噪斑和線條,此時很多人還是不會在意。

但作為一個瓜皮控,這是不能忍的!

於是我做了個實驗,把這個表情圖進行多次保存,結論是驚人的。

截止至目前,已經被保存了10次。

可以看到,第15次保存的時候,這張圖片已經完全被馬賽克和噪斑佔領。

本來我們以為此舉是為了減少手機QQ對於圖片處理上的流量問題,經過保存圖片我們發現,結果和節省流量大相徑庭

原圖.jpg

大小: 10745 位元組

1.jpg

大小: 27557 位元組

2.jpg

大小: 31867 位元組

3.jpg

大小: 34793 位元組

4.jpg

大小: 37329 位元組

5.jpg

大小: 39687 位元組

6.jpg

大小: 42075 位元組

7.jpg

大小: 44780 位元組

8.jpg

大小: 49706 位元組

9.jpg

大小: 57997 位元組

10.jpg

大小: 66001 位元組

11.jpg

大小: 71295 位元組

12.jpg

大小: 74100 位元組

13.jpg

大小: 75552 位元組

14.jpg

大小: 76228 位元組

15.jpg

大小: 76247 位元組

原圖僅為11KB,而經過第15次壓縮之後的圖片為75KB之多,不僅沒有壓縮,在圖片失真的同時,體積竟翻了數倍。

即使是第一次保存,體積也已經翻了一倍多。

我不禁懷疑:

這是和網路提供商暗中合夥吃流量的陰謀?還是刻意把用戶的使用習慣往原創表情引導?反正大騰訊總不會是技術力不夠的(笑

望專業人士解答手機QQ對於圖片失真此舉的目的性。

————————————————————————

看到有些回答貌似有點歪了,順便補充一點:

表情圖片失真問題,實質上一開始並沒有,具體到哪個版本的手機QQ或者Android版本已經記不清了。

但可以確認的一點是 當用戶使用某個自定義表情的時候,此表情不再顯示於「最近」一欄中第一位的那個版本前後 才開始出現這個問題。

當時的主流Android版本應該是4.2-4.3

從那個時候開始,網路上大量流傳失真的表情圖片,人們甚至在失真表情上進行二次編輯,間接導致了低質表情圖污染聊天環境的現象。

比如

直到現在很多人都沒有去深究造成整個現象的原因。

而其實這一切的元兇其實是Android版手機QQ。

GIF表情圖沒有失真現象出現,PNG圖片未做實驗。

—————————————8.21更新—————————————

Android手機QQ更新版本5.8.0.2505

以上問題已被修復

有圖片質量強迫症的小夥伴們速度升級!


先贊一下樓主科學嚴謹的探索精神!

正巧在騰訊ISUX上看WebP圖片格式的介紹時,看到了一些有意思的東西:

測試一:AndroidQQ 下 PNG 和 WebP 各指標對比。

測試環境:AndroidQQ、Galaxy Nexus、Android4.2.2 系統

測試對象:WebP、PNG

以及

可以發現,無損壓縮表現很穩定,壓縮質量越高,壓縮效果也越好。而有損壓縮在壓縮質量設置為 75 以上之後,壓縮效果反而減弱,甚至壓縮後的圖片體積會大於壓縮前的體積

圍觀地址:WebP 探尋之路

於是個人猜測Android QQ內部實際上是使用的WebP壓縮格式,用戶保存表情的時候再轉成JPG,作為新表情或者圖片發出去的時候則是JPG轉成WebP,同一張圖這樣反覆在兩種格式之間壓縮轉換,觸發了上述第二條里的問題,導致文件體積越來越大。

至於WebP為什麼會有這樣的問題,感覺上好像是他們的高質量有損壓縮演算法對圖像的「損」產生了雜訊,然後這部分雜訊又被當作了圖像的圖一部分(信號)去處理。

以上純屬個人猜測,未經考證。

//-----------------------------------6.24更新--------------------------------------------

仔細思考了一下,覺得明知故犯的觸發壓縮後反比壓縮前大的BUG的可能性並不是很高,更重要的原因可能是WebP有損和JPG兩種壓縮格式壓縮時損失掉的信號不一致,至少有一方把另一方(或者雙方互相把對方)壓縮中損失掉信後產生的雜訊當作需要信號去處理,導致雜訊不停的疊加,細節越來越多,文件越來越大。

JPG壓縮的單元是8*8px,webp似乎是16*16,從圖片多次發送後圖上產生噪點的分布看,頻率上應該也是符合的。

要驗證這個想法也不麻煩,還是拿瓜皮的照片,找個webp和jpg格式相互轉換的工具反覆轉換幾次,注意多嘗試幾種有損壓縮質量,猜測應該是在webp-&>jpg質量較高,jpg-&>webp質量較低時出現這個情況的可能性比較高。


加個Android開發,和Android的標籤,回答的人就多了


【微信上傳圖片到朋友圈,iPhone真的比安卓清晰嗎?】小王子Sean:是的,原因是Android的圖片壓縮機制有問題。為什麼微信android圖片質… http://www.zhihu.com/question/29975901/answer/49578374 (分享自知乎網)


要說這個現象,我還發現另外一種現象

只要你之前發過這張表情,騰訊有類似的找相似的功能,只要你發著這張圖,騰訊會保存在伺服器上,下次發送的時候流量就需要的很小。

比如你發送一張10mb的gif動圖,上傳騰訊聊天伺服器,需要10mb流量,但是當你第二次發送的時候,就需要很少的流量,這應該是給每個圖片分配一個ID,騰訊庫內只要有了這個表情,都有這個ID我們發送出去,然後匹配好ID由騰訊代用戶發送,我們只需要發送一個圖片ID就行。

好了 說了這麼多 好像跑題~


第一我覺的 從一般人眼裡 這兩張圖沒有太大差距

第二點,騰訊的目的是改善用戶體驗,加快發送 接收能力而且還能省流量

第三,手機QQ 和微信都支持原圖發送功能的:手機QQ發送不壓縮原圖方法

=============

囧好吧抱歉 沒下拉所以沒看完 就簡單的評了下


為什麼會漸漸變大?

你要知道,有損壓縮是盡量保持源圖片的內容,

二次壓縮,他就會把第一次壓縮產生的失真內容也保存了下來。

所以體積就增大了。


感覺應該和jpg有損壓縮有關係 不是騰訊自己的鍋

不過還是不怎麼理解 為什麼不全部直接用原圖 要重新壓一遍

順便帶個北方醬

貓頭提醒說現在已經修復了 試了一下果然

得知了這個窩肥腸高興!感謝提醒!


推薦閱讀:

2015年2000-3000元最好用的安卓手機?
對設備廠商、軟體開發者、用戶來說,Android 的最關鍵優勢是什麼?
Android 開發時你遇到過什麼相見恨晚的工具或網站?
請問Android有什麼快速開發的類庫,插件,工具嗎?
安卓手機不用360手機衛士會怎麼樣?

TAG:演算法 | Android應用 | Android開發 | Android | 手機QQ |