踩坑:图片拍照上传等

以前这个功能也做过,无奈这次碰上的坑特别多,特此记录。

为啥拍照后总resultCode总是0?

检查了许久,发现,存储的位置不在sdcard,所以拍照后的resultCode总是0。以前没有关注过,以后就要注意,拍照后存储的位置必然sdcard,否则拍照后的结果为失败。

空图片,一选就挂掉

这一问题主要源于上面,上面创建了图片文件,但因为没有正确放入图片,所以大小为空,所以压缩之前要判断是否为空。

部分手机的图片旋转问题

有些手机拍照后图片会发生旋转,这个时候查看也会发现是旋转的,此时需要用特定方法旋转回正确的位置。

public static Bitmap rotateBitmap(Bitmap b, String filepath) {
        int degrees = getExifOrientation(filepath);
        if(degrees != 0 && b != null) {
            Matrix m = new Matrix();
            m.setRotate((float)degrees, (float)b.getWidth() / 2.0F, (float)b.getHeight() / 2.0F);

            try {
                Bitmap b2 = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true);
                if(b != b2) {
                    b.recycle();
                    b = b2;
                }
            } catch (OutOfMemoryError var5) {
                ;
            }
        }

        return b;
    }

    public static int getExifOrientation(String filepath) {
        short degree = 0;
        ExifInterface exif = null;

        try {
            exif = new ExifInterface(filepath);
        } catch (IOException var4) {
            ;
        }

        if(exif != null) {
            int orientation = exif.getAttributeInt("Orientation", -1);
            if(orientation != -1) {
                switch(orientation) {
                    case 3:
                        degree = 180;
                    case 4:
                    case 5:
                    case 7:
                    default:
                        break;
                    case 6:
                        degree = 90;
                        break;
                    case 8:
                        degree = 270;
                }
            }
        }

        return degree;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值