關於android中呼叫系統拍照,返回圖片是旋轉90度..
由於專案的需要,沒有自定義拍照功能,僅僅呼叫了系統的拍照程式..但是出現了一個問題,就是拍照完成顯示圖片居然是被旋轉的圖片....
解決辦法:
/**
* 獲取圖片的旋轉角度,有些系統把拍照的圖片旋轉了,有的沒有旋轉
*/
int degree = readPictureDegree(f.getAbsolutePath());
BitmapFactory.Options opts=new BitmapFactory.Options();//獲取縮圖顯示到螢幕上
opts.inSampleSize=2;
Bitmap cbitmap=BitmapFactory.decodeFile(f.getAbsolutePath(),opts);
/**
* 把圖片旋轉為正的方向
*/
Bitmap newbitmap = rotaingImageView(degree, cbitmap);
iv.setImageBitmap(newbitmap);
01 |
/** |
02 |
*
讀取圖片屬性:旋轉的角度 |
03 |
*
@param path 圖片絕對路徑 |
04 |
*
@return degree旋轉的角度 |
05 |
*/ |
06 |
public static int readPictureDegree(String
path) { |
07 |
int degree
= 0 ; |
08 |
try { |
09 |
ExifInterface
exifInterface = new ExifInterface(path); |
10 |
int orientation
= exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); |
11 |
switch (orientation)
{ |
12 |
case ExifInterface.ORIENTATION_ROTATE_90: |
13 |
degree
= 90 ; |
14 |
break ; |
15 |
case ExifInterface.ORIENTATION_ROTATE_180: |
16 |
degree
= 180 ; |
17 |
break ; |
18 |
case ExifInterface.ORIENTATION_ROTATE_270: |
19 |
degree
= 270 ; |
20 |
break ; |
21 |
} |
22 |
} catch (IOException
e) { |
23 |
e.printStackTrace(); |
24 |
} |
25 |
return degree; |
26 |
} |
27 |
/* |
28 |
*
旋轉圖片 |
29 |
*
@param angle |
30 |
*
@param bitmap |
31 |
*
@return Bitmap |
32 |
*/ |
33 |
public static Bitmap
rotaingImageView( int angle
, Bitmap bitmap) { |
34 |
//旋轉圖片
動作 |
35 |
Matrix
matrix = new Matrix();; |
36 |
matrix.postRotate(angle); |
37 |
System.out.println( "angle2=" +
angle); |
38 |
//
建立新的圖片 |
39 |
Bitmap
resizedBitmap = Bitmap.createBitmap(bitmap, 0 , 0 , |
40 |
bitmap.getWidth(),
bitmap.getHeight(), matrix, true ); |
41 |
return resizedBitmap; |
42 |
} |
/**
* 讀取圖片屬性:旋轉的角度
* @param path 圖片絕對路徑
* @return degree旋轉的角度
*/
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;
}
/*
* 旋轉圖片
* @param angle
* @param bitmap
* @return Bitmap
*/
public static Bitmap rotaingImageView(int angle , Bitmap bitmap) {
//旋轉圖片 動作
Matrix matrix = new Matrix();;
matrix.postRotate(angle);
System.out.println("angle2=" + angle);
// 建立新的圖片
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return resizedBitmap;
}
相關文章
- Android上傳圖片之呼叫系統拍照和從相簿選擇圖片Android
- Android 呼叫相簿 拍照 實現系統控制元件縮放 切割圖片Android控制元件
- html中圖片旋轉HTML
- 解決android有的手機拍照後上傳圖片被旋轉的問題Android
- Android呼叫系統相簿和相機拍照Android
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- 如何實現圖片的3D旋轉,而且是不停旋轉?3D
- H5 和小程式拍照圖片旋轉、壓縮和上傳H5
- ios手機豎屏拍照圖片旋轉90°問題解決方法iOS
- Android學習之呼叫系統相機拍照、截圖並儲存Android
- Android 中實現圖片平移、縮放、旋轉同步進行Android
- 將圖片旋轉(這裡不是旋轉imageView)View
- Android 呼叫系統相機拍照 . 選取本地相簿Android
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- 直播app系統原始碼,圖片Loading旋轉動畫效果APP原始碼動畫
- 圖片操作系列 —(2)手勢旋轉圖片
- php實現圖片旋轉PHP
- Android:呼叫系統相機實現拍照+裁切(相容7.0以上系統)Android
- 適配Android4.4~Android11,呼叫系統相機,系統相簿,系統圖片裁剪,轉換檔案(對圖片進行上傳等操作)Android
- Android本地圖片上傳(拍照+相簿)Android地圖
- Android 拍照、選擇圖片並裁剪Android
- 在Delphi中實現圖片的旋轉、縮放 (轉)
- CSS3圖片旋轉效果CSSS3
- jQuery圖片放大和旋轉效果jQuery
- 短視訊程式開發,Android:呼叫系統拍照和相簿Android
- 【Go語言繪圖】圖片的旋轉Go繪圖
- 呼叫系統檔案管理器選擇圖片,呼叫系統裁剪AIP對圖片處理,顯示裁剪之後的圖片...AI
- imageView圖片放大縮小及旋轉View
- js控制專輯圖片旋轉效果JS
- Flutter 圖片裁剪旋轉翻轉編輯器Flutter
- Android呼叫攝像頭拍照Android
- Android 呼叫攝像頭拍照Android
- Android 從本地選取圖片或者拍照填充ImageViewAndroidView
- 開源圖片工具箱(Img Toolbox) 格式轉換 新增水印 圖片壓縮 圖片裁剪 圖片旋轉 圖片縮放
- android7.0以上呼叫系統相機拍照並顯示到ImageView上AndroidView
- Android儲存圖片到系統相簿Android
- ffmpeg-圖片壓縮旋轉等處理
- Android 中 Base64 轉換成 圖片Android