Android圖片旋轉工具類
import android.graphics.Bitmap; import android.graphics.Matrix; import android.media.ExifInterface;import java.io.IOException;
/**
- Created by pengkv on 15/12/2.
圖片旋轉工具類 */ public class ImageRotateUtil {
/**
- 讀取圖片的旋轉的角度 *
- @param path 圖片絕對路徑
@return 圖片的旋轉角度 */ public static int getBitmapDegree(String path) { int degree = 0; try {
// 從指定路徑下讀取圖片,并獲取其EXIF信息 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 bm 需要旋轉的圖片
- @param degree 旋轉角度
@return 旋轉后的圖片 */ public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) { Bitmap returnBm = null;
// 根據旋轉角度,生成旋轉矩陣 Matrix matrix = new Matrix(); matrix.postRotate(degree); try {
// 將原始圖片按照旋轉矩陣進行旋轉,并得到新的圖片 returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
} catch (OutOfMemoryError e) {
e.printStackTrace(); //當內存溢出時,利用遞歸進行重新旋轉 while (returnBm == null) { System.gc(); System.runFinalization(); returnBm = rotateBitmapByDegree(bm, degree); }
} if (returnBm == null) {
returnBm = bm;
} if (bm != returnBm) {
bm.recycle();
} return returnBm; } }</pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!