Android中获取图片的宽和高

Posted 陈驰字新宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

 

以上是关于Android中获取图片的宽和高的主要内容,如果未能解决你的问题,请参考以下文章

Android获取控件的宽和高

C语言中怎样获得jpg图片的宽和高?

Android 获得view的宽和高

requests获取图片的宽和高

Android查缺补漏(View篇)--在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0?

怎样动态设置GridView的宽和高(Android)