android部分手机拍照后上传图片旋转问题

安卓开发过程中,要兼容的问题越来越多,从5.1以上的双卡,6.0以上的权限,7.0的FileProvide适配到8.0的应用升级未知应用安装处理等等,实在是太多了。
最近项目在测试的时候,有图片上传的功能,在测试小米手机时,发现上传后的图片,从服务端取回时,图片发生了旋转,在网上查了下资料,
发现部分手机确实有这个问题,有问题则要处理。
处理方法就是获取图片的旋转角度,然后对图片进行对应旋转后再上传,这样就OK了。

  /**
     * 获取指定路径图片
     * @param path
     * @return
     */
    private int getPictureDegree(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 e) {
            e.printStackTrace();
        }
        return degree;
    }
然后对图片进行旋转:
  private Bitmap rotaingBitmap(int angle, Bitmap bitmap) {
        Matrix matrix = new Matrix();
        matrix.postRotate(angle);
        // 创建新的图片
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
                bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        return resizedBitmap;
    }

最后对旋转后的图片进行上传就OK了,亲测可行。

你可能感兴趣的:(安卓学习)