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