简单地将图像的尺寸除以显示的尺寸将获得显示的比率。然后,可以选择是否使用高度比率或宽度比率,这取决于它们当中谁更大。只须将这个比率作为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;