能一块玩吗丶 2024-04-11 19:22 采纳率: 50%
浏览 16

Android 应用 glide 加载不了部分图片

场景:Android 应用选择图片时,glide.with 加载某些图片,图片看不了,识别不了。应用 sdk 版本是30,改到 29 就能识别图片了。
个人分析:看了报错是加载图片时,exifinterface 解析图片时解析错误,这表明图片的 exif 信息解析出错,就是说图片的 exif 信息破损了。淘宝、京东也不能识别这张图片。
疑问:但是小红书,微信,qq 能识别图片,看了这些应用的 sdk 版本都是30 以上的,他们是用的什么识别方案呢。

  • 写回答

7条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-11 19:22
    关注

    引自免费微信小程序:皆我百晓生

    在处理类似的问题时,我们可以从以下几个方面进行排查和解决:

    1. 检查 ExifInterface 的兼容性: Glide 使用 ExifInterface 来读取图片的元数据,包括方向等信息。确保你使用的 Glide 版本与 Android SDK 30 兼容。Glide 自 4.8.0 版本开始支持 Android Q(API 级别 29),所以如果你使用的是较旧版本的 Glide,可能需要更新到最新版。

      更新 Glide 到最新版本(例如 4.12.0):

      implementation 'com.github.bumptech.glide:glide:4.12.0'
      annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
      
    2. 排除 Glide 的影响: 可以尝试不使用 Glide,而是直接使用 BitmapFactory.decodeStream() 来加载图片,看看是否可以正常显示。如果这个方法可以加载图片,那么问题就可能在于 Glide 的配置或兼容性上。

      示例代码:

      try {
          InputStream inputStream = new FileInputStream(imagePath);
          Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
          imageView.setImageBitmap(bitmap);
      } catch (IOException e) {
          e.printStackTrace();
      }
      
    3. 使用第三方库修复 Exif 数据: 如果图片的 EXIF 数据确实存在问题,你可以考虑使用像 ExifUtil 这样的库来修复它。这里有一个示例库:https://github.com/darsh2506/ExifUtil

      首先,将库添加到你的 build.gradle 文件中:

      implementation 'com.darsh.exifutil:exif-util:1.0.1'
      

      然后使用修复后的图片进行加载:

      File file = new File(imagePath);
      ExifUtil exifUtil = new ExifUtil(file);
      byte[] fixedBytes = exifUtil.getFixedImageBytes();
      
      // 使用 Glide 加载修复后的图片
      Glide.with(context)
          .asBitmap()
          .load(new ByteArrayInputStream(fixedBytes))
          .into(imageView);
      
    4. 使用其他图像加载库: 如果上述方法都无法解决问题,你可以尝试替换为其他的图像加载库,比如 Picasso 或 Fresco,看看它们是否能正确加载这些图片。

      添加 Picasso 到项目:

      implementation 'com.squareup.picasso:picasso:2.71828'
      

      使用 Picasso 加载图片:

      Picasso.get().load(imagePath).into(imageView);
      
    5. 联系图片提供方: 如果以上所有方法都无效,可能是图片本身就有问题。建议联系图片的提供方,确认他们是否有提供适用于 Android 11+ 的图片格式或优化过 EXIF 数据。

    通过这些步骤,你应该能找到导致图片加载失败的原因,并找到相应的解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月11日

悬赏问题

  • ¥15 地图软件开发技术答疑(api, 地点获取,外观样式)
  • ¥20 物理远程控制麦克风使用问题
  • ¥15 打印预览会泄漏纸钱包密码吗
  • ¥15 在hololens1上运行unity项目只有空窗口
  • ¥25 TABLEAU PREP无法打开
  • ¥15 百度帐号问题/centos
  • ¥15 关于#c语言#的问题:求完整代码条件好说
  • ¥100 HALCON DELPHI
  • ¥15 (需要远程,AI不回)VB6二进制文件转换成功,但是C#转换总是失败
  • ¥15 关于#matlab#的问题:有没有什么其他办法能够保证不退出进程(相关搜索:matlab调用)