簡單地將圖像的尺寸除以顯示的尺寸將獲得顯示的比率。然后,可以選擇是否使用高度比率或?qū)挾缺嚷?,這取決于它們當(dāng)中誰更大。只須將這個(gè)比率作為BitmapFactory.Options. inSampleSize變量,這將產(chǎn)生一幅應(yīng)該加載到內(nèi)存中的圖像,其尺寸接近于我們在這種情況下所需要的尺寸,也接近于顯示本身的尺寸。
// 如果兩個(gè)比率都大于1,
// 那么圖像的一條邊將大于屏幕
if (heightRatio > 1 && widthRatio > 1)
{
if (heightRatio > widthRatio)
{
// 若高度比率更大,則根據(jù)它縮放
bmpFactoryOptions.inSampleSize = heightRatio;
}
else
{
// 若寬度比率更大,則根據(jù)它縮放
bmpFactoryOptions.inSampleSize = widthRatio;
}
}
//對它進(jìn)行真正的解碼
bmpFactoryOptions.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);
下面是通過一個(gè)意圖使用內(nèi)置攝像頭并顯示結(jié)果圖片的完整示例代碼。圖1-3顯示了一幅由此示例生成的屏幕大小的結(jié)果圖像。
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;