Android开发之Bitmap二次采样

(了解)计算机图形表示原理

图片:宽  高                                                                                                                       

图片是由每个像素点来组成   像素点:小方块 

图片的大小:宽*高*每个像素点的大小

 

(掌握)从SdCard加载图片显示

 

(了解)加载大图片OOM异常

内存溢出

本身的大小:2.65MB

dalvik vm:默认16M  

解决的思路:

 

•(掌握)缩放加载大图片

/*获取图片的宽高,这里要设置Options.inJustDecodeBounds=true,这时候decode的bitmap为null, 只是把图片的宽高放在Options里,然后第二步就是设置合适的压缩比例inSampleSize, 这时候获得合适的Bitmap.*/
 //进行二次采样
        //只加载图片宽高  第一次采样
        BitmapFactory.Options options = new BitmapFactory.Options();
        //如果设置为true,不获取图片,不分配内存,但会返回图片的高度宽度信息 不加载图片大小
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(file.getAbsolutePath(), options);
        //获取图片的宽高
        int outWidth = options.outWidth;
        int outHeight = options.outHeight;
        //获取屏幕宽高
        Display display = getWindowManager().getDefaultDisplay();
        int width = display.getWidth();
        int height = display.getHeight();
        //计算宽高比率
        int scale = 0;
        int scaleX = outWidth / width;
        int scaleY = outHeight / height;
        //取比率值大的
        scale = scaleX > scaleY ? scaleX : scaleY;
        //第二次采样
        options.inJustDecodeBounds = false;
        options.inSampleSize = scale;
        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
        //最后把值返回给你需要的地方

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值