Bitmap bitmap= BitmapFactory.decodeFile("/sdcard/a.jpg");    iv.setImageBitmap(bitmap);

在android中要加载一张大图片到内存中,会抛出内存溢出异常Caused by: java.lang.OutOfMemoryError。

正确的做法应该是这样的:

public class MainActivity extends Activity {    private ImageView iv;    private int windowHeight;    private int windowWidth;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        iv = (ImageView) findViewById(R.id.iv);        WindowManager win = (WindowManager) getSystemService(WINDOW_SERVICE);        windowHeight = win.getDefaultDisplay().getHeight();        windowWidth = win.getDefaultDisplay().getWidth();    }     @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }     public void load(View view) {             /*   Bitmap bitmap= BitmapFactory.decodeFile("/sdcard/a.jpg");         iv.setImageBitmap(bitmap);*/                  // 图片解析的配置        BitmapFactory.Options options = new Options();        // 不去真的解析图片,只是获取图片的头部信息宽,高        options.inJustDecodeBounds = true;        BitmapFactory.decodeFile("/sdcard/a.jpg", options);        int imageHeight = options.outHeight;        int imageWidth = options.outWidth;        // 计算缩放比例        int scaleX = imageWidth / windowWidth;        int scaleY = imageHeight / windowHeight;        int scale = 1;        if (scaleX > scaleY & scaleY >= 1) {            scale = scaleX;         }else if (scaleY > scaleX & scaleX >= 1) {            scale = scaleY;         }        //真的解析图片        options.inJustDecodeBounds=false;        //设置采样率        options.inSampleSize=scale;        Bitmap bitmap=BitmapFactory.decodeFile("/sdcard/a.jpg", options);        iv.setImageBitmap(bitmap);    } }

xml配置

     
在这种情况下,是将大分辨率的图片按照一定的比例缩小然后加载进内存,就不会出现内存溢出的现象了。

转自: https://www.2cto.com/kf/201404/293670.html


更多相关文章

  1. Android设置背景图像重复【整理自网络】
  2. Android图片缩放效果代码
  3. Android(安卓)与H5交互心得(Base64图片)
  4. Android学习札记51:在TextView显示插入的图片
  5. Android(安卓)调用系统的分享[完美实现同时分享图片和文字]
  6. DataBinding赋值本地图片src
  7. 2011.09.29(2)——— android 图片缩略图
  8. android 获取图片信息 之 ExifInterface
  9. Android(安卓)imageView图片按比例缩放

随机推荐

  1. 显示mysql表中的所有数据
  2. MySQL数据类型中DECIMAL的作用和用法
  3. mysql莫名问题 ERROR 1045 (28000): Acce
  4. oracle和mysql的几点重要区别总结
  5. MySQL 运算符和函数
  6. Mysql:设置0000-00-00为null
  7. 将数据存入mysql中
  8. mysql 的完整性约束 与单表查询
  9. 再论mysql线程出现Waiting for table flu
  10. PHP解析错误:语法错误,意外的T_VARIABLE