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