亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中使用ExifInterface判斷Camera圖片的方向

發布時間:2021-05-18 17:51:26 來源:億速云 閱讀:299 作者:Leah 欄目:移動開發

今天就跟大家聊聊有關怎么在Android中使用ExifInterface判斷Camera圖片的方向,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

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) {
  }
 }
 }

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

看完上述內容,你們對怎么在Android中使用ExifInterface判斷Camera圖片的方向有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇江市| 黔东| 昌吉市| 定南县| 资兴市| 息烽县| 琼结县| 孟州市| 赤峰市| 体育| 宜章县| 中阳县| 辛集市| 东方市| 都江堰市| 辽源市| 陇川县| 邮箱| 穆棱市| 石阡县| 元氏县| 余干县| 凤冈县| 岳池县| 雷山县| 永胜县| 博爱县| 昌乐县| 鄂州市| 新泰市| 衡水市| 志丹县| 正宁县| 临沂市| 宁城县| 贞丰县| 牙克石市| 灵台县| 沅江市| 昭苏县| 孟州市|