国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android中3種圖片壓縮處理方法

2020-04-11 11:31:40
字體:
供稿:網(wǎng)友

Android中圖片的存在形式:

1:文件形式:二進(jìn)制形式存在與硬盤中。
2:流的形式:二進(jìn)制形式存在與內(nèi)存中。
3:Bitmap的形式

三種形式的區(qū)別:
文件形式和流的形式:對圖片體積大小并沒有影響。也就是說,如果你手機(jī)SD卡上的圖片通過流的形式讀到內(nèi)存中,在內(nèi)存中的大小也是原圖的大小。
注意:不是Bitmap的形式。
Bitmap的形式:圖片占用的內(nèi)存會瞬間變大。
以下是代碼的形式:

    

 /**   * 圖片壓縮的方法總結(jié)   */  /*   * 圖片壓縮的方法01:質(zhì)量壓縮方法   */  private Bitmap compressImage(Bitmap beforBitmap) {    // 可以捕獲內(nèi)存緩沖區(qū)的數(shù)據(jù),轉(zhuǎn)換成字節(jié)數(shù)組。    ByteArrayOutputStream bos = new ByteArrayOutputStream();    if (beforBitmap != null) {      // 第一個(gè)參數(shù):圖片壓縮的格式;第二個(gè)參數(shù):壓縮的比率;第三個(gè)參數(shù):壓縮的數(shù)據(jù)存放到bos中      beforBitmap.compress(CompressFormat.JPEG, 100, bos);      int options = 100;      // 循環(huán)判斷壓縮后的圖片是否是大于100kb,如果大于,就繼續(xù)壓縮,否則就不壓縮      while (bos.toByteArray().length / 1024 > 100) {        bos.reset();// 置為空        // 壓縮options%        beforBitmap.compress(CompressFormat.JPEG, options, bos);        // 每次都減少10        options -= 10;      }      // 從bos中將數(shù)據(jù)讀出來 存放到ByteArrayInputStream中      ByteArrayInputStream bis = new ByteArrayInputStream(          bos.toByteArray());      // 將數(shù)據(jù)轉(zhuǎn)換成圖片      Bitmap afterBitmap = BitmapFactory.decodeStream(bis);      return afterBitmap;    }    return null;  }  /*   * 圖片壓縮方法02:獲得縮略圖   */  public Bitmap getThumbnail(int id) {    // 獲得原圖    Bitmap beforeBitmap = BitmapFactory.decodeResource(        mContext.getResources(), id);    // 寬    int w = mContext.getResources()        .getDimensionPixelOffset(R.dimen.image_w);    // 高    int h = mContext.getResources().getDimensionPixelSize(R.dimen.image_h);    // 獲得縮略圖    Bitmap afterBitmap = ThumbnailUtils        .extractThumbnail(beforeBitmap, w, h);    return afterBitmap;  }  /**   * 圖片壓縮03   *    * @param id   *      要操作的圖片的大小   * @param newWidth   *      圖片指定的寬度   * @param newHeight   *      圖片指定的高度   * @return   */  public Bitmap compressBitmap(int id, double newWidth, double newHeight) {    // 獲得原圖    Bitmap beforeBitmap = BitmapFactory.decodeResource(        mContext.getResources(), id);    // 圖片原有的寬度和高度    float beforeWidth = beforeBitmap.getWidth();    float beforeHeight = beforeBitmap.getHeight();    // 計(jì)算寬高縮放率    float scaleWidth = 0;    float scaleHeight = 0;    if (beforeWidth > beforeHeight) {      scaleWidth = ((float) newWidth) / beforeWidth;      scaleHeight = ((float) newHeight) / beforeHeight;    } else {      scaleWidth = ((float) newWidth) / beforeHeight;      scaleHeight = ((float) newHeight) / beforeWidth;    }    // 矩陣對象    Matrix matrix = new Matrix();    // 縮放圖片動作 縮放比例    matrix.postScale(scaleWidth, scaleHeight);    // 創(chuàng)建一個(gè)新的Bitmap 從原始圖像剪切圖像    Bitmap afterBitmap = Bitmap.createBitmap(beforeBitmap, 0, 0,        (int) beforeWidth, (int) beforeHeight, matrix, true);    return afterBitmap;  }

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 郸城县| 信宜市| 霍邱县| 金平| 出国| 泾阳县| 黄山市| 兴业县| 开江县| 桑日县| 天全县| 乐陵市| 鲁山县| 化州市| 东丰县| 思茅市| 镶黄旗| 汝阳县| 松潘县| 威宁| 资兴市| 潮安县| 云阳县| 高阳县| 昌图县| 和顺县| 连云港市| 柳江县| 福清市| 辉县市| 商河县| 东光县| 兴隆县| 沽源县| 洪江市| 尉犁县| 赫章县| 城口县| 华安县| 朝阳市| 海原县|