android判断相机图片朝向的简单方法
android应用里使用相机图片时必须要考虑的一个问题就是图片朝向,只有判断对朝向才能调整图片从而更好的展现。本文将介绍一种通过ExifInterface判断图片朝向的方法!
上代码:
/**
*
*利用给定路径下的图片设置ImageView
*
*@paramimgPath 手机图片文件路径
*@paramimgView 需要设置的ImageView
*/
publicvoidsetImg(StringimgPath,ImageViewimgView){
Filefile=newFile(imgPath);
if(file.exists()&&file.canRead()){
//-------1.图片缩放--------
//手机屏幕信息
DisplayMetricsmetric=newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
intdw=metric.widthPixels;//屏幕宽
intdh=metric.heightPixels;//屏幕高
//加载图像,只是为了获取尺寸
BitmapFactory.Optionsoptions=newBitmapFactory.Options();
options.inJustDecodeBounds=true;//设置之后可以获取尺寸信息
Bitmapbitmap=BitmapFactory.decodeFile(imgPath,options);
//计算水平和垂直缩放系数
intheightRatio=(int)Math.ceil(options.outHeight/(float)dh);
intwidthRatio=(int)Math.ceil(options.outWidth/(float)dw);
//判断哪个大
if(heightRatio>1&&widthRatio>1){
if(heightRatio>widthRatio){
options.inSampleSize=heightRatio;
}else{
options.inSampleSize=widthRatio;
}
}
//图片缩放
options.inJustDecodeBounds=false;
bitmap=BitmapFactory.decodeFile(imgPath,options);
//-------2.判断图片朝向--------
try{
ExifInterfaceexif=newExifInterface(imgPath);
intdegree=0;//图片旋转角度
if(exif!=null){
intorientation=exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION,-1);
if(orientation!=-1){
switch(orientation){
caseExifInterface.ORIENTATION_ROTATE_90:
degree=90;
break;
caseExifInterface.ORIENTATION_ROTATE_180:
degree=180;
break;
caseExifInterface.ORIENTATION_ROTATE_270:
degree=270;
break;
default:
break;
}
}
}
if(degree!=0){//图片需要旋转
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
Matrixmatrix=newMatrix();
matrix.preRotate(degree);
BitmapmRotateBitmap=Bitmap.createBitmap(bitmap,0,0,
width,height,matrix,true);
imgView.setImageBitmap(mRotateBitmap);
}else{
imgView.setImageBitmap(bitmap);
}
}catch(IOExceptione){
}
}
}
本代码包含两大功能:
1.图片缩放:原始图片一般比较大,经过缩小才能使用;
2.图片旋转:由于用户拍照时手机角度不同,所得照片可能需要旋转。
以上这篇android判断相机图片朝向的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。