国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

BWrong / 2195人閱讀

摘要:寫在前面開發中的圖像壓縮是一個很重要的部分。而這篇文章會讓我們從另外一個角度來認識平臺下的圖像壓縮和優化。所以,它是你圖像壓縮和優化的首選,盡可能的去使用吧。

寫在前面

Android開發中的圖像壓縮是一個很重要的部分。而這篇文章會讓我們從另外一個角度來認識Android平臺下的圖像壓縮和優化。

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

簡介

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

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

2. VectorDrawable
Android 平臺的矢量圖形 。

3. JPG
JPG全名是JPEG。JPEG圖片以 24 位顏色存儲單個位圖。JPEG 是與平臺無關的格式,支持最高級別的壓縮,不過,這種壓縮是有損耗的。漸近式 JPEG 文件支持交錯。

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

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

關于PNG圖像的壓縮

PNG圖像是Android開發中使用的比較廣泛的,而它的壓縮和優化的方式也相應比較多。

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

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

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

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

3. PNG 壓縮優化工具
網上有很多關于PNG格式的壓縮優化工具,你可以到Google上搜索 PNG Optimizer ,會出來很多相關的資料。
另外Google官方也有一個開源的項目Zopfli,是deflate壓縮算法的另一種實現。
這里需要注意的是,有時候通過其他工具壓縮后的PNG圖像,再經過aapt工具的壓縮,恩,那應該會更小?

WTF !!!

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

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

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

如果你通過代碼畫出來:

沒有對比,就沒有傷害。

5. 矢量圖代替PNG圖

關于用矢量圖去代替PNG,官方視頻中介紹了一個位圖轉換為矢量圖的工具Potrace

矢量圖同樣也可以再經過處理轉換成VectorDrawable格式,而size會進一步變小。這里有一個開源庫svg2android,可以將svg轉換為VectorDrawable 。

關于VectorDrawable

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

關于VectorDrawable的介紹和使用,這里不做過多的介紹。

關于JPG圖像的壓縮

當談到關于JPG的圖像的時候,官方視頻中的講解者Colt McAnlis如是說到:

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

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

1. 降低JPG圖像的質量

以上兩張圖片,通過將圖片的質量降低,圖片大小由263k減少到25k,壓縮的非常可觀,當然并不是所有的JPG圖像都適用這種降低質量的方式,因為首先,你需要在保證在不影響人肉眼觀看的效果的前提下,再去降低圖像的質量。

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

2. JPG 壓縮優化工具

同樣的,網上關于JPG圖像的一些壓縮優化工具也很多,你可以Google搜索下JPG Optimizer

關于WebP

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

另外推薦一個開源庫WebpifyYourAndroidApp,可以將PNG或者JPG轉換為WebP圖像。

最后

如果你覺得以上內容太多,記不住的話, 沒關系,官方視頻為我們提供一張總結圖:

簡單來說,從圖像壓縮和優化的角度來看的話,當你在選擇圖像的時候,應當考慮的優先級如下:
VectorDrawable>WebP>PNG>JPG

另:因為本文涉及到很多有關圖像相關的專業知識,如果有錯誤的地方,歡迎指出 :)

參考

Image compression for Android developers - Google I/O 2016

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64940.html

相關文章

  • Google I/O 2016 筆記Espresso 進階

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

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

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

    waltr 評論0 收藏0

發表評論

0條評論

BWrong

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<