三星手机拍照旋转问题

Posted basuny

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三星手机拍照旋转问题相关的知识,希望对你有一定的参考价值。

获得拍照照片后,查看旋转角度,如果有旋转角度,说明被旋转了,再使用旋转矩阵旋转回来即可。

调用方:

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();
        }
    }

 

以上是关于三星手机拍照旋转问题的主要内容,如果未能解决你的问题,请参考以下文章

学海拾贝苹果手机拍照照片旋转问题及解决方案

iOS拍照图片旋转的问题

苹果手机(ios)拍照上传图片旋转90度问题---java后台处理

iOS和小米手机拍照上传后,在web端显示旋转

关于android中调用系统拍照,返回图片是旋转90度

ios系统 竖屏拍照 canvas处理后 图片旋转(利用exif.js解决ios手机上传竖拍照片旋转90度问题)