Android 使用BitmapFactory.decodeFile()文件转图片出现null值

最近用户提了个单子是上传某张图片时会闪退,日志显示是压缩图时获取的的bitmap为null

最开始以为是用户路径有问题,毕竟谷歌大大改了那么多版本,又是权限,又是隔离缓存的,谁知道用户什么版本,什么情况。直到联系用户拿到图片才知道是自己丢的代码问题。

emmm.........

具体代码就不说了,直接说几种解决方案吧

1.第一种:路径问题

看到null值,首先想到的就是是不是路径不对,知道拿到图片后,一步步打印,发现路径是正常打印出来的。其他图片也正常,但是就当前图片报空指针。

emmm.....可能是姿势不对,把当前的问题图片复制到和其他照片相同目录,然后继续。。,路径都对,但是就是

闪退,

闪退,

闪退。

基本排除闪退问题

2.权限问题

其实权限问题我并没有去考虑,因为我已经设置进行时权限了,所以并不考虑这个,列一下,只是为了告知有这么一种情况,如果出现当前问题可以看下自己权限是否正常开启

3.Android 10 分区存储问题

谷歌在对Android 10权限问题上进一步加强,在Android 10上如果不加requestLegacyExternalStorage=“true”也有可能会出现当前问题,谷歌大大也给出了解决方案

    <manifest ... >
      <!-- This attribute is "false" by default on apps targeting
           Android 10 or higher. -->
      <application android:requestLegacyExternalStorage="true" ... >
        ...
      </application>
    </manifest>
    

4.加载图片慢的问题

我在这篇帖子(https://blog.csdn.net/qq_35821446/article/details/106275094)看到会有加载慢的问题,但是我并没有出现过,在慢三百毫米时依然返回空值,不过可以做为参考看看

5.图片长款较大(也可能是图片过大

这个就是我遇到的问题,当前用户的给的图片是80+兆(所以才压缩呀),分辨率为13824*18432,所以在获取图片时一直为空,搞了几个小时没找到问题所在,最终使用 options.inSampleSize解决

具体方案写下,过程就不说了,反正网上说的大多数方案我都试了下,没一点效果/。。。。

        val options = BitmapFactory.Options()
        options.inJustDecodeBounds = true
        var bitmap = BitmapFactory.decodeFile(photoPath, options)
         options.inSampleSize="缩放比例"
        options.inJustDecodeBounds = false
        bitmap = BitmapFactory.decodeFile(photoPath, options)

就写到这吧,也没什么写的了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值