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