现在的位置: 首页 > 综合 > 正文

Android照片旋转问题

2018年05月18日 ⁄ 综合 ⁄ 共 1265字 ⁄ 字号 评论关闭

在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 记

抱歉!评论已关闭.