您好,登錄后才能下訂單哦!
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. 圖片旋轉:由于用戶拍照時手機角度不同,所得照片可能需要旋轉。
以上這篇android判斷相機圖片朝向的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。