图片缩放2

2018-08-11  本文已影响0人  dev晴天
  public void doClick(View view) {

        /*  此种方式加载大图片(远远大于手机的分辨率)容易oom    BitmapFactory.decodeFile(String);
        * 故使用含有两个参数的构造函数BitmapFactory.decodeFile(String,options);
        * 按照要求创建options参数
        * */

        //创建位图工厂配置参数
        BitmapFactory.Options options = new BitmapFactory.Options();
        // 设置为true 解码器不去真正解析位图 但是会获得位图的宽高信息(封装到options中 宽高)
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile("mnt/sdcard/1.jpg", options);// 不解析位图此处也不必要射返回值
        //获得图片宽高
        int Imgheight = options.outHeight;
        int Imgwidgh = options.outWidth;

        // 计算缩放比例   一般大于1 的时候进行缩放图片小于手机分辨率 不用进行缩放的

        int scale = 1;//默认缩放比例
        int scaleX = Imgheight / height;
        int scaleY = Imgwidgh / width;
        if (scaleX >= scaleY && scaleX > scale) {
            scale = scaleX;
        }
        if (scaleY > scaleX && scaleY > scale) {
            scale = scaleY;
        }
        //以上为固定步骤

        //按照缩放比例进行缩放
        options.inSampleSize = scale;//  以计算出的样品进行显示(可以不进行计算直接指定缩放比例  但是这种方法或有时缩放过度)
        // 按照缩放比例真正解析位图
        options.inJustDecodeBounds = false;//刚开始使用的时候不设置默认为false
        Bitmap bitmap = BitmapFactory.decodeFile("mnt/sdcard/1.jpg", options);
//        显示图片
        imageView.setImageBitmap(bitmap);

    }
上一篇 下一篇

猜你喜欢

热点阅读