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

时间: 2024-10-10 17:36:25

BitmapFactory.Options的相关文章

BitmapFactory.Options详解 怎样获取图片的大小 遇到大一些的图片,遇到OOM(Out Of Memory)的问题

下面我们回到我们的主题上来:怎样获取图片的大小? 思路很简单: 首先我们把这个图片转成Bitmap,然后再利用Bitmap的getWidth()和getHeight()方法就可以取到图片的宽高了. 新问题又来了,在通过BitmapFactory.decodeFile(Stringpath)方法将突破转成Bitmap时,遇到大一些的图片,我们经常会遇到OOM(Out Of Memory)的问题.怎么避免它呢? 这就用到了我们上面提到的BitmapFactory.Options这个类. Bitmap

BitmapFactory.Options 处理OOM

问题颇多,百度没出来个所以然 InputStream inputStream = MainActivity.this.getContentResolver().openInputStream(uri); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; options.inPreferredConfig = Bitmap.Config.ARGB_8888;

android 下载图片出现SkImageDecoder::Factory returned null,BitmapFactory.Options压缩

网上有很多说是因为没有采用HttpClient造成的,尼玛,我改成了HttpClient 请求图片之后还是会出现SkImageDecoder::Factory returned null, 但是直接使用 bitmap = BitmapFactory.decodeStream(is);  是正常的,但解决不了图片大内存溢出的问题 解决办法: 重新获取一次流,注意看代码(红色部分): /** * 根据网络url获取bitmap对象 * @param url * @param width 要获取的宽度

BitmapFactory.Options详解

public Bitmap inBitmap If set, decode methods that take the Options object will attempt to reuse this bitmap when loading content. public int inDensity The pixel density to use for the bitmap. public boolean inDither If dither is true, the decoder wi

BitmapFactory.Options对图片进行缩放

package com.pingyijinren.helloworld.activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Imag

BitmapFactory.Options解决Android加载图片内存溢出的问题

BitmapFactory.Options解决Android加载图片内存溢出的问题 1. 在Android软件开发过程中,图片处理是经常遇到的. 在将图片转换成Bitmap的时候,由于图片的大小不一样,当遇到很大的图片的时候会出现超出内存的问题,为了解决这个问题Android API提供了BitmapFactory.Options这个类. 2. 由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出.Bitmap会将图片的所有像素(即长x宽)加载到内存中,如果图片分辨率过大,会直

Android实战简易教程-第九枪(BitmapFactory.Options对资源图片进行缩放)

我们知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常.因此在展示高分辨率图片的时候,最好先将图片进行压缩,压缩后的图片大小应该和用来展示它的控件大小相近,这样可以兼顾显示效果和内存占用. BitmapFactory.Options这个类,有一个字段叫做 inJustDecodeBounds .SDK中对这个成员的说明是这样的: If set to true, the decoder will return null (no bitm

BitmapFactory.Options详解 -- 转载

下面我们回到我们的主题上来:怎样获取图片的大小?思路很简单:首先我们把这个图片转成Bitmap,然后再利用Bitmap的getWidth()和getHeight()方法就可以取到图片的宽高了.新问题又来了,在通过BitmapFactory.decodeFile(String path)方法将突破转成Bitmap时,遇到大一些的图片,我们经常会遇到OOM(Out Of Memory)的问题.怎么避免它呢?这就用到了我们上面提到的BitmapFactory.Options这个类. BitmapFac

BitmapFactory.Options.inSampleSize 的用法

BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误.这往往是由于图片过大造成的.要想正常使用,则需要分配更少的内存空间来存储. BitmapFactory.Options.inSampleSize 设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误.inSampleSize的具体含义请参考SDK文档.例如: BitmapFactory.Options opts = new