a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

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

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

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

Android中圖片的存在形式:

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

三種形式的區(qū)別:
文件形式和流的形式:對圖片體積大小并沒有影響。也就是說,如果你手機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) {      // 第一個參數(shù):圖片壓縮的格式;第二個參數(shù):壓縮的比率;第三個參數(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();    // 計算寬高縮放率    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)建一個新的Bitmap 從原始圖像剪切圖像    Bitmap afterBitmap = Bitmap.createBitmap(beforeBitmap, 0, 0,        (int) beforeWidth, (int) beforeHeight, matrix, true);    return afterBitmap;  }

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日本a v网站 | 成人欧美一区二区三区黑人孕妇 | 嫩草影院在线观看91麻豆 | 成人在线| 欧美成人免费在线观看 | 免费一二二区视频 | 亚洲精品中文字幕中文字幕 | 国产美女在线精品免费 | 日韩国产欧美视频 | 亚洲国产精品女人久久久 | 91精品久久久久久久久久 | 欧美2区 | 银杏成人影院在线观看 | 最近日韩中文字幕 | 夜夜爽99久久国产综合精品女不卡 | av久久| 中文字幕 国产 | 亚洲一区二区中文字幕在线观看 | 成人在线精品视频 | 欧美一区二区三区精品 | 国内精品一区二区 | www.欧美视频 | 久久综合狠狠综合久久 | 久久国产精品99久久久久久老狼 | 爱爱免费视频网站 | 国产精品视频一区二区三区 | 亚洲免费视频网站 | 亚洲三级免费 | 精品一区av | 国产成人精品国内自产拍免费看 | 91网站在线看 | 午夜专区 | 亚洲免费在线观看 | 国产亚洲精品久久久久久青梅 | 日本精品久久 | 一区二区在线免费观看 | 日韩欧美一区二区视频 | 精品国产乱码久久久久久蜜柚 | 欧美a在线 | 成人性大片免费观看网站 | 国产精品久久毛片 |