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);

 

posted @ 2016-06-30 12:02  DarrenChan陈驰  阅读(6450)  评论(0编辑  收藏  举报
Live2D