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

Posted 事在人为,幸福从不抱怨开始!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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了,亲测可行。

以上是关于android部分手机拍照后上传图片旋转问题的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

移动端图片上传旋转压缩的解决方案

iphone上传拍照图片时图片会旋转90度,从相册选择就不会,安卓手机也不会,怎么解决?