android獲取照片的快照

當我們在做相冊、上傳相關的應用的時候需要獲取圖片的快照,這時候就需要獲取圖片的快照。

android中專門有一個BitmapFactory類可以來處理這類需求。

實現的步驟如下:

1.首先解析出圖片文件(註意在這裡為瞭節約內存將inJustDecodeBounds設為true,這樣的話解析的圖片的話隻有圖片的尺寸大小信息)

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);

2.獲取圖片的實際尺寸,並且算出實際大小和要顯示的大小的比例

int heightRatio = (int) Math.ceil(bmpFactoryOptions.outHeight/ (float) DISPLAYHEIGHT);

int widthRatio = (int) Math.ceil(bmpFactoryOptions.outWidth/ (float) DISPLAYWIDTH);

3.這兒是關鍵,為瞭隻獲取這個圖片的快照需要將inSampleSize屬性設置為上一步算出的比例,這樣的話顯示的圖片寬高為 1/比例,大小為 1/比例的平方

if (heightRatio > 1 && widthRatio > 1) {
            if (heightRatio > widthRatio) {
                bmpFactoryOptions.inSampleSize = heightRatio;
            } else {
                bmpFactoryOptions.inSampleSize = widthRatio;
            }
        }
4.最後在重新解析一遍圖片

bmpFactoryOptions.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);
5.這樣的話就獲取到瞭圖片的一個快照

You May Also Like