Back

android - 把图片按照重力来旋转(拍时什么方向就变成什么方向)

发布时间: 2017-08-23 02:02:00

我们遇到个问题: 拍照功能,在 三星S3  5.0的机器上的照片,本来是机器竖着的时候拍的,

结果保存的时候变成了横屏的.

所以,需要下列代码进行调整:

    /**
     * 针对部分机型,拍的照片是横屏的. 需要给他竖过来
     */
    private Bitmap ajustOrientation(Bitmap bm, String imgpath) {
        int rotate = 0;
        ExifInterface exif = null;
        try {
            exif = new ExifInterface(imgpath);
        } catch (IOException e) {
            e.printStackTrace();
            exif = null;
        }
        if (exif != null) {
            // 读取图片中相机方向信息
            int ori = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                    ExifInterface.ORIENTATION_UNDEFINED);
            // 计算旋转角度
            switch (ori) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    rotate = 90;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    rotate = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    rotate = 270;
                    break;
                default:
                    rotate = 0;
                    break;
            }
        }
        if (rotate != 0) {
            // 旋转图片
            Matrix m = new Matrix();
            m.postRotate(rotate);
            bm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                    bm.getHeight(), m, true);
        }
        return bm;
    }

Back