簡單地將圖像的尺寸除以顯示的尺寸將獲得顯示的比率。然后,可以選擇是否使用高度比率或寬度比率,這取決于它們當中誰更大。只須將這個比率作為BitmapFactory.Options. inSampleSize變量,這將產生一幅應該加載到內存中的圖像,其尺寸接近于我們在這種情況下所需要的尺寸,也接近于顯示本身的尺寸。
// 如果兩個比率都大于1,
// 那么圖像的一條邊將大于屏幕
if (heightRatio > 1 && widthRatio > 1)
{
if (heightRatio > widthRatio)
{
// 若高度比率更大,則根據它縮放
bmpFactoryOptions.inSampleSize = heightRatio;
}
else
{
// 若寬度比率更大,則根據它縮放
bmpFactoryOptions.inSampleSize = widthRatio;
}
}
//對它進行真正的解碼
bmpFactoryOptions.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);
下面是通過一個意圖使用內置攝像頭并顯示結果圖片的完整示例代碼。圖1-3顯示了一幅由此示例生成的屏幕大小的結果圖像。
package com.apress.proandroidmedia.ch1.sizedcameraintent;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;