Bitmap——BitmapFactory.Options

来源:互联网 发布:数据库原理及技术pdf 编辑:程序博客网 时间:2024/05/22 12:27

转自http://blog.csdn.net/ruiyiin/article/details/8675361

加载和显示图片是很消耗内存的一件事,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

0 0
原创粉丝点击