在Android系统中有时候会遇到调用系统相机拍照的需求,然而拍照之后,经常性的会遇到一个问题就是,照片自己旋转了一定的角度,拿我刚遇到的三星手机来说吧,照片自动向左旋转了90度,这个就很令人惆怅啊,因为这个之前有过一定的了解,所以解决起来也相对容易一些,总的思路就是,先获取照片转了多少度,然后。。。给它旋转回来。。。时间所限,先把核心的代码贴出来吧:
/** * 读取图片旋转了的角度--EricTang * * @param path图片保存路径 * @return degree图片旋转了的角度 */ public static int readImageDegree(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 ex) { Log.d("读取图片旋转了的角度时发生严重问题", "----" + ex.getMessage()); ex.printStackTrace(); } return degree; } /** * 调整图片角度--EricTang * * @param angle要调整的图片角度 * @param bitmap传递过来的bitmap参数,即需要旋转的bitmap * @return 返回的bitmap参数 */ public static Bitmap rotateBitmap(int angle, Bitmap bitmap) { //旋转图片 Matrix matrix = new Matrix(); matrix.postRotate(angle); Log.d("向右旋转的角度是", "--" + angle); //创建新图片 Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); return resizedBitmap; }
至于ExifInterface这个类,位于Android.Media下,用于获取图片的Exif信息,想要了解更多的同学可以看一下,至于该方法如何使用,相信会使用Bitmap的同学都会使用了,如果不会的话。。。那就直接在下面留言吧
2015年1月28日,EricTang 记