真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中有哪些圖片壓縮方式-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Android中有哪些圖片壓縮方式,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站頁面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)的建站公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。

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

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

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

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

參數(shù)stream: 寫入壓縮數(shù)據(jù)的輸出流。

常用的用法:

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方法對(duì)bitmap進(jìn)行質(zhì)量壓縮,10%壓縮,90%不壓縮。

圖片的大小是沒有變的,因?yàn)橘|(zhì)量壓縮不會(huì)減少圖片的像素,它是在保持像素的前提下改變圖片的位深及透明度等,來達(dá)到壓縮圖片的目的,這也是為什么該方法叫質(zhì)量壓縮方法。圖片的長(zhǎng),寬,像素都不變,那么bitmap所占內(nèi)存大小是不會(huì)變的。

quality值越小壓縮后的baos越?。ㄊ褂脠?chǎng)景:在微信分享時(shí),需要對(duì)圖片的字節(jié)數(shù)組大小進(jìn)行限制,這時(shí)可以使用bitmap的compress方法對(duì)圖片進(jìn)行質(zhì)量壓縮)。

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

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

inSampleSize: 當(dāng)它小于1的時(shí)候,將會(huì)被當(dāng)做1處理,如果大于1,那么就會(huì)按照比例(1 / inSampleSize)縮小bitmap的寬和高、降低分辨率,大于1時(shí)這個(gè)值將會(huì)被處置為2的倍數(shù)。例如,width=100,height=100,inSampleSize=2,那么就會(huì)將bitmap處理為,width=50,height=50,寬高降為1 / 2,像素?cái)?shù)降為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設(shè)置為false,在通過BitmapFactory的decodeXXXX方法解碼圖片,返回空(null)的Bitmap對(duì)象,同時(shí)獲取了bitmap的寬高,再通過calculateInSampleSize方法根據(jù)原bitmap的 寬高和目標(biāo)寬高計(jì)算出合適的inSampleSize,最后將inJustDecodeBounds設(shè)置為true,通過BitmapFactory的decodeXXXX方法解碼圖片(使用場(chǎng)景:比如讀取本地圖片時(shí),防止Bitmap過大導(dǎo)致內(nèi)存溢出)。

3、通過Matrix壓縮圖片

Matrix matrix = new Matrix();

matrix.setScale(0.5f, 0.5f);

bm = Bitmap.createBitmap(bit, 0, 0, bit.getWidth(),bit.getHeight(), matrix, true);

}

使用場(chǎng)景:自定義View時(shí),對(duì)圖片進(jìn)行縮放、旋轉(zhuǎn)、位移以及傾斜等操作,常見的就是對(duì)圖片進(jìn)行縮放處理,以及圓角圖片等。

關(guān)于Android中有哪些圖片壓縮方式就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)站名稱:Android中有哪些圖片壓縮方式-創(chuàng)新互聯(lián)
路徑分享:http://weahome.cn/article/goihh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部