您的位置:首页 > 运维架构

BitmapFactory.Options

2013-03-15 09:55 183 查看
加载和显示图片是很消耗内存的一件事,BitmapFactory.Options 类, 允许我们定义图片以何种方式如何读到内存,

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inSampleSize = 8;
Bitmap bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);
imv.setImageBitmap(bmp);

上面的代码使图片变成原来的1/8.

//imv = (ImageView) findViewById(R.id.ReturnedImageView);
Display currentDisplay = getWindowManager().getDefaultDisplay();
int dw = currentDisplay.getWidth();
int dh = currentDisplay.getHeight();
try
{
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().
openInputStream(imageFileUri), null,  bmpFactoryOptions);

int heightRatio = (int)Math.ceil(bmpFactoryOptions.outHeight/(float)dh);
int widthRatio = (int)Math.ceil(bmpFactoryOptions.outWidth/(float)dw);

Log.v("HEIGHRATIO", ""+heightRatio);
Log.v("WIDTHRATIO", ""+widthRatio);

if (heightRatio > 1 && widthRatio > 1)
{
bmpFactoryOptions.inSampleSize =  heightRatio > widthRatio ? heightRatio:widthRatio;
}
bmpFactoryOptions.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeStream(getContentResolver().
openInputStream(imageFileUri), null,  bmpFactoryOptions);
returnedImageView.setImageBitmap(bmp);
}
catch (FileNotFoundException e)
{
Log.v("ERROR", e.toString());

}


上面的代码让图片根据窗口大小改变

bmpFactoryOptions.inJustDecodeBounds = true;
这一行让代码只解码图片的Bounds
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: