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);
上一篇:十九、Java基础--------IO流之字节流


下一篇:Xamarin for android:为button设置click事件的几种方法