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判断相机图片朝向的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。