亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android小知識之圖片的3種壓縮方式小結

2019-10-21 21:37:17
字體:
來源:轉載
供稿:網友

設置圖片格式

Android目前常用的圖片格式有png,jpeg和webp,

png:無損壓縮圖片格式,支持Alpha通道,Android切圖素材多采用此格式

jpeg:有損壓縮圖片格式,不支持背景透明,適用于照片等色彩豐富的大圖壓縮,不適合logo

webp:是一種同時提供了有損壓縮和無損壓縮的圖片格式,派生自視頻編碼格式VP8,從谷歌官網來看,無損webp平均比png小26%,有損的webp平均比jpeg小25%~34%,無損webp支持Alpha通道,有損webp在一定的條件下同樣支持,有損webp在Android4.0(API 14)之后支持,無損和透明在Android4.3(API18)之后支持

采用webp能夠在保持圖片清晰度的情況下,可以有效減小圖片所占有的磁盤空間大小

Android中Bitmap所占內存大小計算方式:圖片長度 x 圖片寬度 x 一個像素點占用的字節數

1、Bitmap的Compress方法(質量壓縮):

public boolean compress(CompressFormat format, int quality, OutputStream stream)

參數format:表示圖像的壓縮格式,目前有CompressFormat.JPEG、CompressFormat.PNG、CompressFormat.WEBP。

參數quality: 圖像壓縮率,0-100。 0 壓縮100%,100意味著不壓縮。

參數stream: 寫入壓縮數據的輸出流。

常用的用法:

public static Bitmap compress(Bitmap bitmap){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, baos); byte[] bytes = baos.toByteArray(); return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);}

上面方法中通過bitmap的compress方法對bitmap進行質量壓縮,10%壓縮,90%不壓縮。

圖片的大小是沒有變的,因為質量壓縮不會減少圖片的像素,它是在保持像素的前提下改變圖片的位深及透明度等,來達到壓縮圖片的目的,這也是為什么該方法叫質量壓縮方法。圖片的長,寬,像素都不變,那么bitmap所占內存大小是不會變的。

quality值越小壓縮后的baos越?。ㄊ褂脠鼍埃涸谖⑿欧窒頃r,需要對圖片的字節數組大小進行限制,這時可以使用bitmap的compress方法對圖片進行質量壓縮)。

2、BitmapFactory.Options的inJustDecodeBounds和inSampleSize參數(采樣壓縮率):

inJustDecodeBounds:當inJustDecodeBounds設置為true的時候,BitmapFactory通過decodeXXXX解碼圖片時,將會返回空(null)的Bitmap對象,這樣可以避免Bitmap的內存分配,但是它可以返回Bitmap的寬度、高度以及MimeType。

inSampleSize: 當它小于1的時候,將會被當做1處理,如果大于1,那么就會按照比例(1 / inSampleSize)縮小bitmap的寬和高、降低分辨率,大于1時這個值將會被處置為2的倍數。例如,width=100,height=100,inSampleSize=2,那么就會將bitmap處理為,width=50,height=50,寬高降為1 / 2,像素數降為1 / 4。

常用用法:

public static Bitmap inSampleSize(Bitmap bitmap,int reqWidth,int reqHeight){ final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(data, 0, data.length, options); options.inSampleSize = calculateInSampleSize(options, reqWidth,   reqHeight); options.inJustDecodeBounds = false; return BitmapFactory.decodeByteArray(data, 0, data.length, options);}public static int calculateInSampleSize(BitmapFactory.Options options,          int reqWidth, int reqHeight) { final int picheight = options.outHeight; final int picwidth = options.outWidth; int targetheight = picheight; int targetwidth = picwidth; int inSampleSize = 1; if (targetheight > reqHeight || targetwidth > reqWidth) {  while (targetheight >= reqHeight    && targetwidth >= reqWidth) {   inSampleSize += 1;   targetheight = picheight / inSampleSize;   targetwidth = picwidth / inSampleSize;  } } return inSampleSize;}}

inSampleSize方法中先將inJustDecodeBounds設置為false,在通過BitmapFactory的decodeXXXX方法解碼圖片,返回空(null)的Bitmap對象,同時獲取了bitmap的寬高,再通過calculateInSampleSize方法根據原bitmap的 寬高和目標寬高計算出合適的inSampleSize,最后將inJustDecodeBounds設置為true,通過BitmapFactory的decodeXXXX方法解碼圖片(使用場景:比如讀取本地圖片時,防止Bitmap過大導致內存溢出)。

3、通過Matrix壓縮圖片

Matrix matrix = new Matrix();matrix.setScale(0.5f, 0.5f);bm = Bitmap.createBitmap(bit, 0, 0, bit.getWidth(),bit.getHeight(), matrix, true);}

使用場景:自定義View時,對圖片進行縮放、旋轉、位移以及傾斜等操作,常見的就是對圖片進行縮放處理,以及圓角圖片等。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区三区视频播放| 亚洲精品国产精品久久清纯直播| 最近2019年手机中文字幕| 精品久久久久久中文字幕一区奶水| 庆余年2免费日韩剧观看大牛| 中文字幕亚洲欧美日韩在线不卡| 国产精品第二页| 日韩av电影免费观看高清| 欧美一乱一性一交一视频| 精品国产一区二区三区久久狼5月| 亚洲香蕉av在线一区二区三区| 欧美成人在线影院| 亚洲一区二区久久| 国产高清视频一区三区| 在线性视频日韩欧美| 亚洲电影成人av99爱色| 日韩少妇与小伙激情| 成人欧美一区二区三区在线| 欧美性极品少妇精品网站| 亚洲片国产一区一级在线观看| 97色在线视频| 久久久久久免费精品| 午夜精品一区二区三区在线播放| 78m国产成人精品视频| 日韩在线观看免费高清完整版| 欧美最猛性xxxxx(亚洲精品)| 久久综合久久88| 日韩视频在线一区| 国产欧美日韩最新| 国产精品一香蕉国产线看观看| 91黑丝在线观看| 国内精品中文字幕| 日本高清不卡在线| 人人做人人澡人人爽欧美| 91精品国产91久久久久久最新| 最近中文字幕2019免费| 国外色69视频在线观看| www.美女亚洲精品| 亚洲成人av在线| 国产精品h片在线播放| 国产亚洲人成a一在线v站| 日韩电影在线观看中文字幕| 国产精品成人国产乱一区| 久久久久久久97| 成人免费视频a| 国产网站欧美日韩免费精品在线观看| 丝袜亚洲欧美日韩综合| 国产一区二区av| 亚洲天堂开心观看| 97国产精品人人爽人人做| 国产精品扒开腿做爽爽爽视频| 日韩精品在线视频| 中文精品99久久国产香蕉| 亚洲女人被黑人巨大进入al| 亚洲国产三级网| 亚洲免费精彩视频| 亚洲国内精品视频| 亚洲美女精品成人在线视频| 亚洲最大激情中文字幕| 午夜美女久久久久爽久久| 成人欧美一区二区三区在线| 欧美精品情趣视频| 伊人av综合网| 欧美精品在线第一页| 国产在线日韩在线| 欧美激情国产日韩精品一区18| 久久久成人的性感天堂| 欧美黑人巨大xxx极品| 永久免费毛片在线播放不卡| 国产大片精品免费永久看nba| www亚洲欧美| 欧美色另类天堂2015| 日韩h在线观看| 久久中文字幕视频| 欧美日韩aaaa| 国产欧美一区二区三区在线看| 亚洲视频欧美视频| 中文字幕亚洲欧美| 国产精品亚洲美女av网站| 红桃av永久久久| 欧美老女人bb| 国内自拍欧美激情| 日韩欧美在线视频免费观看| 国产精品91免费在线| 亚洲男人的天堂在线| 尤物九九久久国产精品的分类| 亚洲无限av看| 欧美性xxxx在线播放| 成人在线一区二区| 亚洲欧美综合v| 欧美超级免费视 在线| 国产精品爽黄69| 国产精品69精品一区二区三区| 久久精品99久久久香蕉| 久久久久久亚洲| 欧美国产精品人人做人人爱| 国产美女精品免费电影| 欧美一区二区大胆人体摄影专业网站| 日本久久久久久久久久久| 国产亚洲精品久久久久动| 国产精品亚洲视频在线观看| 亚洲人成绝费网站色www| 日韩美女毛茸茸| 国产欧美中文字幕| 国产精品久久久久av免费| 国外成人在线视频| 久久香蕉国产线看观看网| 97在线免费视频| 久久综合色88| 欧美日韩国产成人在线| 精品国内产的精品视频在线观看| 91精品综合久久久久久五月天| 欧美亚洲午夜视频在线观看| 97精品视频在线播放| 亚洲国产天堂久久国产91| 57pao国产成人免费| 国产香蕉97碰碰久久人人| 97免费中文视频在线观看| 伊人伊成久久人综合网小说| 欧美久久精品午夜青青大伊人| 欧美午夜久久久| 国产偷亚洲偷欧美偷精品| 97在线视频免费观看| 中文字幕久热精品视频在线| 狠狠躁夜夜躁人人爽超碰91| 2020欧美日韩在线视频| 91精品国产自产在线老师啪| 中文字幕无线精品亚洲乱码一区| 国产一区二区三区在线免费观看| 久久久久久国产精品美女| 亚洲美女精品久久| 国产精品久久久久久久久久久不卡| 中文字幕亚洲综合久久| 成人网欧美在线视频| 国产成人在线一区| 中文字幕亚洲天堂| 亚洲一区国产精品| 欧美性猛交xxxx免费看久久久| 亚洲最新av在线网站| 九九热精品视频在线播放| 精品av在线播放| 欧美激情视频免费观看| 欧美中文字幕视频| 欧美最猛黑人xxxx黑人猛叫黄| 欧美亚洲国产成人精品| 日本19禁啪啪免费观看www| 久久网福利资源网站| 日韩女在线观看| 国产成人精品免费久久久久| 日韩欧美成人免费视频| 亚洲精品天天看| 免费91麻豆精品国产自产在线观看| 91理论片午午论夜理片久久| 8x拔播拔播x8国产精品| 国产精品777| 欧美另类第一页| 爽爽爽爽爽爽爽成人免费观看| 成人黄色av免费在线观看| 日韩禁在线播放| 国产成人鲁鲁免费视频a| 中文字幕av一区二区三区谷原希美| 日韩久久免费视频| 日韩欧美高清在线视频| 日韩av在线播放资源|