首页 > 代码库 > 三星手机拍照旋转问题
三星手机拍照旋转问题
获得拍照照片后,查看旋转角度,如果有旋转角度,说明被旋转了,再使用旋转矩阵旋转回来即可。
调用方:
int degree = BitmapUtils.getBitmapDegree(file.getAbsolutePath()); BitmapUtils.compressBitmapForUploadLimitMaxSize(this, file, MAX_UPLOAD_SIZE); BitmapUtils.rotateBitmapByDegree(file, degree);
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; } public static void rotateBitmapByDegree(File file, int degree) { if (file == null || !file.exists() || degree == 0) { return; } Bitmap bitmap = null, rotatedBitmap = null; try { bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); if (bitmap == null) { return; } // 根据旋转角度,生成旋转矩阵 Matrix matrix = new Matrix(); matrix.postRotate(degree); // 将原始图片按照旋转矩阵进行旋转,并得到新的图片 rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); saveBitmap2file(rotatedBitmap, file); } catch (OutOfMemoryError e) { L.exception(e); } finally { if (bitmap != null) { bitmap.recycle(); } if (rotatedBitmap != null) { rotatedBitmap.recycle(); } System.gc(); } }
三星手机拍照旋转问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。