You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用读取图片报错:BitmapFactory返回Null(FileNotFoundException)

问题原因与解决方案

你遇到的问题核心在于**BitmapFactory.decodeFile()是用来读取文件系统中的物理文件路径,而res目录下的资源是打包进APK的内部资源,并非手机文件系统里的独立文件**,所以直接用"drawable-v24/ean13.bmp"这种路径肯定找不到目标文件,自然会抛出FileNotFoundException并返回null。

下面是几种正确读取res中图片并获取Bitmap的方法:

方法一:使用BitmapFactory.decodeResource()

这是最直接适配Android资源体系的方式,通过资源ID来读取:

// 在Activity中直接调用
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ean13);

如果是在非Activity类(比如Fragment、自定义View)中,需要传入Context来获取Resources实例:

// Fragment中
Bitmap bitmap = BitmapFactory.decodeResource(requireContext().getResources(), R.drawable.ean13);

// 自定义View中
Bitmap bitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ean13);

注意:系统会自动根据设备API版本匹配对应的drawable目录(比如你放的drawable-v24),你不需要手动指定目录路径,只需要用R.drawable.ean13即可。

额外检查项

  • 确认你的资源文件名符合Android规范:只能包含小写字母、数字和下划线,不能有大写字母或特殊字符(你的ean13.bmp是符合要求的,但如果是EAN13.bmp就会导致资源ID无法生成)。
  • 检查图片是否真的存在于对应的res/drawable目录下,没有被误放到mipmap或其他文件夹中。
  • 如果图片尺寸过大,可以添加采样率配置避免OOM,但你的场景只是检查像素,这个可能暂时不需要,不过如果后续仍出现Bitmap为null的情况,可以排查这个点。

内容的提问来源于stack exchange,提问作者Sba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:56:27