Android开发拍照图片旋转
在做照相機圖片相關(guān)操作的時候,由于android手機的適配原因,不同手機上出發(fā)的相機操作可能在細節(jié)上有很多不同,例如攝像頭拍照的角度旋轉(zhuǎn)了,使得獲取到的圖片也是旋轉(zhuǎn)后的,再比如某些相機的圖片像素太高了,對圖片數(shù)據(jù)進行操作的時候造成內(nèi)存不足等。下面就對相機拍攝時的圖像被旋轉(zhuǎn)的問題進行一些實際的解決方案:
問題:由于攝像頭拍照 是豎屏,顯示的時候需要旋轉(zhuǎn)了 90 度。也就是說顯示的是 旋轉(zhuǎn)90度后的 預(yù)覽 圖片?怎么處理...
有一種方法是在說在拍照的時候?qū)?nèi)容顯示設(shè)定為橫屏顯示,
?
<activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="landscape">
還有在onCreate函數(shù)加入
?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
?
這樣拍出來的圖片就不能被旋轉(zhuǎn)了。說實話,這種方式不具有通用型,而且很不靈活,不能適配所有手機。所以不建議,但是可以作為一個想法。
其實真正能解決這種問題的方法是找到相機在拍照后得到的原圖和實際顯示的圖片的旋轉(zhuǎn)角度,然后我們再通過Matrix對圖片進行旋轉(zhuǎn)就Ok了。
那么我們怎樣獲取相機拍攝的原圖和實際顯示圖片的旋轉(zhuǎn)角度呢?在網(wǎng)上找到了這種方法,經(jīng)過驗證,著實可行。
/*** 讀取照片exif信息中的旋轉(zhuǎn)角度* @param path 照片路徑* @return角度*/public static int readPictureDegree(String path) {int degree = 0;try {ExifInterface exifInterface = new ExifInterface(path);int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);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;}} catch (IOException e) {e.printStackTrace();}return degree;}
得到原圖和實際顯示的圖片的旋轉(zhuǎn)角度后,我們再通過對原圖進行旋轉(zhuǎn)degree就行了,這個旋轉(zhuǎn)方法可以通過Matrix實現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的Android开发拍照图片旋转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【树 图 科 技 头 条】2022年7月
- 下一篇: Android拍照,照片会自己旋转