成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Google I/O 2016 筆記之圖像壓縮

BWrong / 2230人閱讀

摘要:寫在前面開發(fā)中的圖像壓縮是一個(gè)很重要的部分。而這篇文章會(huì)讓我們從另外一個(gè)角度來認(rèn)識平臺(tái)下的圖像壓縮和優(yōu)化。所以,它是你圖像壓縮和優(yōu)化的首選,盡可能的去使用吧。

寫在前面

Android開發(fā)中的圖像壓縮是一個(gè)很重要的部分。而這篇文章會(huì)讓我們從另外一個(gè)角度來認(rèn)識Android平臺(tái)下的圖像壓縮和優(yōu)化。

這篇文章更適合和設(shè)計(jì)師一起來看,所以,如果你和你的設(shè)計(jì)師是好基友的話,不妨叫上他,倒兩杯咖啡,花上幾分鐘...
...
...
其實(shí)主要有部分圖像專業(yè)處理上相關(guān)的知識,筆者并沒有去深入介紹(能力有限),所以有設(shè)計(jì)師的幫助會(huì)讓你了解的更透徹。

簡介

日常我們在Android開發(fā)中接觸到的圖像,主要有以下四種格式:

1. PNG
PNG的名稱來源于“可移植網(wǎng)絡(luò)圖形格式(Portable Network Graphic Format,PNG)”,PNG用來存儲(chǔ)灰度圖像時(shí),灰度圖像的深度可多到16位,存儲(chǔ)彩色圖像時(shí),彩色圖像的深度可多到48位,并且還可存儲(chǔ)多到16位的α通道數(shù)據(jù)。PNG使用從LZ77派生的無損數(shù)據(jù)壓縮算法,一般應(yīng)用于JAVA程序、網(wǎng)頁或S60程序中,原因是它壓縮比高,生成文件體積小。

2. VectorDrawable
Android 平臺(tái)的矢量圖形 。

3. JPG
JPG全名是JPEG。JPEG圖片以 24 位顏色存儲(chǔ)單個(gè)位圖。JPEG 是與平臺(tái)無關(guān)的格式,支持最高級別的壓縮,不過,這種壓縮是有損耗的。漸近式 JPEG 文件支持交錯(cuò)。

4. WebP格式
谷歌(Google)開發(fā)的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,并能節(jié)省大量的服務(wù)器帶寬資源和數(shù)據(jù)空間。Facebook Ebay等知名網(wǎng)站已經(jīng)開始測試并使用WebP格式。

本文所說的圖像壓縮就是關(guān)于以上這四種格式

關(guān)于PNG圖像的壓縮

PNG圖像是Android開發(fā)中使用的比較廣泛的,而它的壓縮和優(yōu)化的方式也相應(yīng)比較多。

1. AAPT
aapt全稱Android Asset Packaging Tool,直譯的話,就是Android資源打包工具,這是Android官方提供的一個(gè)打包工具,而它在將我們的Android項(xiàng)目打包成apk的過程中,已經(jīng)自動(dòng)幫我們完成了一次對于PNG圖片的壓縮處理,有興趣的同學(xué),可以將Android項(xiàng)目源碼中的資源圖片與apk中解壓出來的資源圖片的大小對比一下,你會(huì)發(fā)現(xiàn)apk中的圖片會(huì)比我們源碼中的圖片要小,我相信很多小伙伴都沒有注意到這一點(diǎn)吧 :)

而在官方視頻中的介紹,aapt工具對于圖像壓縮只做了三件事:specifically , no more , no less
簡單來說的話就是對圖像進(jìn)行了二次處理,如下圖所示:

2. 降低圖像色彩位數(shù)
如果你的圖像文件的色彩比較單一,那么你可以通過降低圖像的位數(shù)來進(jìn)行壓縮,如下圖所示:

注意:降低色彩位數(shù)的前提是,并不會(huì)影響用戶對圖像的觀看。

3. PNG 壓縮優(yōu)化工具
網(wǎng)上有很多關(guān)于PNG格式的壓縮優(yōu)化工具,你可以到Google上搜索 PNG Optimizer ,會(huì)出來很多相關(guān)的資料。
另外Google官方也有一個(gè)開源的項(xiàng)目Zopfli,是deflate壓縮算法的另一種實(shí)現(xiàn)。
這里需要注意的是,有時(shí)候通過其他工具壓縮后的PNG圖像,再經(jīng)過aapt工具的壓縮,恩,那應(yīng)該會(huì)更小?

WTF !!!

別急,這里需要對Gradle文件添加一行配置:

這里推薦一個(gè)插件img-optimizer-gradle-plugin,一款用于優(yōu)化png圖片的gradle插件,有效減少APK體積,支持極限壓縮和無損壓縮。

4. 通過代碼來代替PNG圖
假設(shè)你有一個(gè)圓形的圖像需要展示很用戶,如果使用PNG圖片的話:

如果你通過代碼畫出來:

沒有對比,就沒有傷害。

5. 矢量圖代替PNG圖

關(guān)于用矢量圖去代替PNG,官方視頻中介紹了一個(gè)位圖轉(zhuǎn)換為矢量圖的工具Potrace 。

矢量圖同樣也可以再經(jīng)過處理轉(zhuǎn)換成VectorDrawable格式,而size會(huì)進(jìn)一步變小。這里有一個(gè)開源庫svg2android,可以將svg轉(zhuǎn)換為VectorDrawable 。

關(guān)于VectorDrawable

VectorDrawable(矢量圖形)是Android官方推出一個(gè)新的特性,為我們提供了添加復(fù)雜矢量圖形的強(qiáng)大功能,同時(shí)也提供了動(dòng)畫顯示這些圖形的方法。矢量圖形的好處是放大不會(huì)失真,可以適應(yīng)不同分辨率的屏幕。所以,它是你圖像壓縮和優(yōu)化的首選,盡可能的去使用吧。

關(guān)于VectorDrawable的介紹和使用,這里不做過多的介紹。

關(guān)于JPG圖像的壓縮

當(dāng)談到關(guān)于JPG的圖像的時(shí)候,官方視頻中的講解者Colt McAnlis如是說到:

By the way ,Colt McAnlis的視頻講解非常富有激情,也很幽默,我個(gè)人比較喜歡他。Google 官方的Android Performance Patterns(性能優(yōu)化視頻)合集中有很多是由他來講解的,所以強(qiáng)烈推薦有興趣的同學(xué)去看看。

JPG相對于PNG格式的圖像,更加復(fù)雜,所以一般不推薦直接使用JPG圖像。關(guān)于JPG圖像的壓縮方式有以下幾種:

1. 降低JPG圖像的質(zhì)量

以上兩張圖片,通過將圖片的質(zhì)量降低,圖片大小由263k減少到25k,壓縮的非??捎^,當(dāng)然并不是所有的JPG圖像都適用這種降低質(zhì)量的方式,因?yàn)槭紫?,你需要在保證在不影響人肉眼觀看的效果的前提下,再去降低圖像的質(zhì)量。

但是,這里會(huì)出現(xiàn)一個(gè)問題,如果你有很多張這樣的圖片,然后你手動(dòng)的一個(gè)個(gè)通過比對去降低,這樣的效率會(huì)非常低下。所以官方視頻中為這種方式提供了一個(gè)圖像質(zhì)量適用規(guī)則:

2. JPG 壓縮優(yōu)化工具

同樣的,網(wǎng)上關(guān)于JPG圖像的一些壓縮優(yōu)化工具也很多,你可以Google搜索下JPG Optimizer

關(guān)于WebP

谷歌(Google)開發(fā)的一種旨在加快圖片加載速度的圖片格式,所以,強(qiáng)烈推薦使用WebP圖像來替換PNG和JPG圖像。

另外推薦一個(gè)開源庫WebpifyYourAndroidApp,可以將PNG或者JPG轉(zhuǎn)換為WebP圖像。

最后

如果你覺得以上內(nèi)容太多,記不住的話, 沒關(guān)系,官方視頻為我們提供一張總結(jié)圖:

簡單來說,從圖像壓縮和優(yōu)化的角度來看的話,當(dāng)你在選擇圖像的時(shí)候,應(yīng)當(dāng)考慮的優(yōu)先級如下:
VectorDrawable>WebP>PNG>JPG

另:因?yàn)楸疚纳婕暗胶芏嘤嘘P(guān)圖像相關(guān)的專業(yè)知識,如果有錯(cuò)誤的地方,歡迎指出 :)

參考

Image compression for Android developers - Google I/O 2016

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64940.html

相關(guān)文章

  • Google I/O 2016 筆記Espresso 進(jìn)階

    摘要:總之,盡量去分離那些不屬于層面的內(nèi)容。所以,我們需要對之前那行代碼進(jìn)行改裝很簡單,只需將可能變化的部分抽出來即可。 簡介 Espresso 是 Google 官方提供的一個(gè)易于測試 Android UI 的開源框架 , 于2013年10月推出它的 released 版本 , 目前最新版本已更新到2.x . 并且在AndroidStudio 2.2 預(yù)覽版中已經(jīng)默認(rèn)集成該測試庫 . Es...

    劉東 評論0 收藏0
  • 入門系列在Nginx配置Gzip

    摘要:結(jié)果應(yīng)該與以前略有不同響應(yīng)頭沒有輸出,這意味著文件是在沒有壓縮的情況下提供。文件的響應(yīng)頭下一步是將配置支持其他類型文件的壓縮。下一步是檢查配置的更改是否按預(yù)期工作?,F(xiàn)在,只有圖像文件才能保持未壓縮狀態(tài)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由小鐵匠米蘭的v 發(fā)表于云+社區(qū)專欄 簡介 網(wǎng)站加載的速度取決于瀏覽器必須下載的所有文件的大小。減少要傳輸?shù)奈募?..

    waltr 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<