android应用里使用相机图片时必须要考虑的一个问题就是图片朝向,只有判断对朝向才能调整图片从而更好的展现。本文将介绍一种通过ExifInterface判断图片朝向的方法!
上代码:
代码如下 | 复制代码 |
/** * * 利用给定路径下的图片设置ImageView * * @param imgPath 手机图片文件路径 * @param imgView 需要设置的ImageView */ publicvoidsetImg(String imgPath, ImageView imgView) { File file =newFile(imgPath); if(file.exists() && file.canRead()) { // -------1.图片缩放--------
// 手机屏幕信息 DisplayMetrics metric =newDisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); intdw = metric.widthPixels;// 屏幕宽 intdh = metric.heightPixels;// 屏幕高
// 加载图像,只是为了获取尺寸 BitmapFactory.Options options =newBitmapFactory.Options(); options.inJustDecodeBounds =true;// 设置之后可以获取尺寸信息 Bitmap bitmap = 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{ ExifInterface exif =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(); Matrix matrix =newMatrix(); matrix.preRotate(degree); Bitmap mRotateBitmap = Bitmap.createBitmap(bitmap,0,0, width, height, matrix,true);
imgView.setImageBitmap(mRotateBitmap); }else{ imgView.setImageBitmap(bitmap); } }catch(IOException e) { } } } |
本代码包含两大功能:
1. 图片缩放:原始图片一般比较大,经过缩小才能使用;
2. 图片旋转:由于用户拍照时手机角度不同,所得照片可能需要旋转。
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔