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

BitmapFactory.Options

2016-05-18 19:28 337 查看
加载和显示图片是很消耗内存的一件事,BitmapFactory.Options 类,  允许我们定义图片以何种方式如何读到内存,

[java] view
plain copy

BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();  

bmpFactoryOptions.inSampleSize = 8;  

Bitmap bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);  

imv.setImageBitmap(bmp);  

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

[java] view
plain copy

//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());  

  

       }  

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

[java] view
plain copy

bmpFactoryOptions.inJustDecodeBounds = true;  

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