1. 程式人生 > >【達內課程】Bitmap圖片的壓縮

【達內課程】Bitmap圖片的壓縮

在這裡插入圖片描述

BitmapUtils

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class BitmapUtils {

    /**
     * 壓縮圖片,獲取相應尺寸的圖片
     * @param is 輸入流
     * @param width 目標寬度
     * @param height 目標高度
     * @return
     */
    public static Bitmap loadBitmap(InputStream is,int width,int height) throws IOException {
        //把is解析,把資料讀取到byte[]中
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        //把輸入流中的資料讀取到bos中
        byte[] buffer = new byte[1024*8];
        int length = 0;
        while ((length=is.read(buffer))!=-1){
            bos.write(buffer,0,length);
            bos.flush();
        }
        //該byte陣列描述的是一個圖片的完整資訊
       byte[] bytes = bos.toByteArray();
        //獲取圖片原始尺寸
        BitmapFactory.Options options = new BitmapFactory.Options();
        //僅僅載入邊界屬性
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeByteArray(bytes,0,bytes.length,options);
        //根據原始尺寸和width、height計算壓縮比例
        int w = options.outWidth/width;
        int h = options.outHeight/height;
        int scale = w>h?w:h;
        //執行壓縮
        options.inJustDecodeBounds = false;
        options.inSampleSize = scale;//設定縮放比例
        Bitmap bitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length,options);
        return bitmap;
    }
}

使用

Bitmap bitmap = BitmapUtils.loadBitmap(is,5,5);