a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android通過ExifInterface判斷Camera圖片方向的方法

2019-10-21 21:33:20
字體:
來源:轉載
供稿:網友

Android的Camera相關應用開發中,有一個必須搞清楚的知識點,就是Camera的預覽方向和拍照方向

圖像的Sensor方向:手機Camera的圖像數據都是來自于攝像頭硬件的圖像傳感器(Image Sensor),這個Sensor被固定到手機之后是有一個默認的取景方向的,這個方向如下圖所示,坐標原點位于手機橫放時的左上角:

Android,ExifInterface,判斷,Camera,圖片方向

android應用里使用相機圖片時必須要考慮的一個問題就是圖片朝向,只有判斷對朝向才能調整圖片從而更好的展現。本文將介紹一種通過ExifInterface判斷圖片朝向的方法!上代碼:

/** * 利用給定路徑下的圖片設置ImageView * @param imgPath 手機圖片文件路徑 * @param imgView 需要設置的ImageView */ public void setImg(String imgPath, ImageView imgView) { File file = new File(imgPath); if (file.exists() && file.canRead()) {  // -------1.圖片縮放--------  // 手機屏幕信息  DisplayMetrics metric = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(metric);  int dw = metric.widthPixels; // 屏幕寬  int dh = metric.heightPixels; // 屏幕高  // 加載圖像,只是為了獲取尺寸  BitmapFactory.Options options = new BitmapFactory.Options();  options.inJustDecodeBounds = true; // 設置之后可以獲取尺寸信息  Bitmap bitmap = BitmapFactory.decodeFile(imgPath, options);  // 計算水平和垂直縮放系數  int heightRatio = (int) Math.ceil(options.outHeight / (float) dh);  int widthRatio = (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 = new ExifInterface(imgPath);  int degree = 0; // 圖片旋轉角度  if (exif != null) {   int orientation = exif.getAttributeInt(    ExifInterface.TAG_ORIENTATION, -1);   if (orientation != -1) {   switch (orientation) {   case ExifInterface.ORIENTATION_ROTATE_90:    degree = 90;    break;   case ExifInterface.ORIENTATION_ROTATE_180:    degree = 180;    break;   case ExifInterface.ORIENTATION_ROTATE_270:    degree = 270;    break;   default:    break;   }   }  }  if (degree != 0) { // 圖片需要旋轉   int width = bitmap.getWidth();   int height = bitmap.getHeight();   Matrix matrix = new Matrix();   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. 圖片旋轉:由于用戶拍照時手機角度不同,所得照片可能需要旋轉。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 97色在线视频 | 欧美精品久久久久久久久久丰满 | 久草资源在线视频 | 好大好爽快点深一点陶软 | 免费国产一区二区 | 欧美色综合 | 成人韩免费网站 | 少妇久久久久 | 欧美大片在线看免费观看 | 久久伊人在 | 一区二区三区在线观看视频 | 成人免费在线观看视频 | 蜜桃免费一区二区三区 | 91精品久久久久久久 | 亚洲 中文 欧美 日韩 在线观看 | 国产免费视频 | 在线观看国产日韩欧美 | 四虎亚洲精品 | 日韩中文一区 | 久久之精品| 艹逼视频在线免费观看 | 国产精品久久毛片 | 草久在线视频 | yy6080久久伦理一区二区 | 亚洲一区二区三区免费在线观看 | 久久精品国产一区 | 黄色在线观看网址 | 精品一二三区在线观看 | 欧美精品一区二区三区在线四季 | 欧美高清一区 | 日韩精品欧美在线 | 中文字幕国产一区 | 日韩三级在线播放 | 91在线成人 | 三级成人 | 91久久久久久久久久久久久 | 亚洲乱码一区二区 | 亚洲最大成人 | 中文无码久久精品 | 欧美国产在线视频 | 久久毛片 |