zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    B. Pasha and Phone
    GCD(关于容斥原理)
    二分乘法
    Lucky7(容斥原理)
    E. Devu and Flowers
    最大公约数最小公倍数
    leetcode每日刷题计划--day55
    Titanic--kaggle竞赛入门-生存预测
    做题记录--day54
    机器学习上机作业1记录 && 相关知识点复习
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/5629538.html
Copyright © 2011-2022 走看看