【達內課程】Bitmap圖片的壓縮
阿新 • • 發佈:2018-11-08
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);