Android中获取图片的宽和高

在Android中,我们想获取图片的宽和高应该怎么办?
一、正常加载图片的方法下获取宽和高

举一个简单的例子:创建一个图片的副本

//加载原图
        Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.photo3);
        
        //创建副本
        //1.创建与原图一模一样大小的bitmap对象,该对象中目前是没有内容的,可以比喻为创建了和原图一样大小
        //的白纸
        Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());
        //2.创建画笔对象
        Paint paint = new Paint();
        //3.创建画板,把白纸铺到画板上
        Canvas canvas = new Canvas(bmCopy);
        //4.开始作画
        canvas.drawBitmap(bmSrc, new Matrix(), paint);
        
        ImageView iv1 = (ImageView) findViewById(R.id.iv1);
        ImageView iv2 = (ImageView) findViewById(R.id.iv2);
        
        iv1.setImageBitmap(bmSrc);
        iv2.setImageBitmap(bmCopy);

 

二、在不加载图片的情况下获取图片的宽和高

此时需要用到Options对象,举一个简单的例子:图片缩放

Options opts = new Options();
        //只请求图片宽高,不解析图片像素(请求图片属性但不申请内存,解析bitmap对象,该对象不占内存)
        opts.inJustDecodeBounds = true;
        //String path = Environment.getExternalStorageDirectory() + "/dog.jpg";
        BitmapFactory.decodeFile("sdcard/dog.jpg", opts);
        int imageWidth = opts.outWidth;
        int imageHeight = opts.outHeight;
        
        //获取屏幕的宽和高
        Display dp = getWindowManager().getDefaultDisplay();
        int screenWidth = dp.getWidth();
        int screenHeight = dp.getHeight();
        
        //图片的宽高除以屏幕的宽高,算出宽和高的缩放比例,取较大值作为图片的缩放比例
        int scale = 1;
        int scaleX = imageWidth / screenWidth;
        int scaleY = imageHeight / screenHeight;
        if(scaleX >= scaleY && scaleX > 1){
            scale = scaleX;
        }else if(scaleX < scaleY && scaleY > 1){
            scale = scaleY;
        }
        
        System.out.println(scale);
        
        //按照缩放比例加载图片
        //设置缩放比例
        opts.inSampleSize = scale;
        //为图片申请内存
        opts.inJustDecodeBounds = false;
        Bitmap bm = BitmapFactory.decodeFile("sdcard/dog.jpg", opts);
        
        iv.setImageBitmap(bm);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值