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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM