java - 位图工厂抛出 FileNotFoundException

标签 java android bitmap android-resources android-bitmap

我遇到了一个奇怪的问题。我正在尝试在 Android 项目中使用 res/drawable 文件夹中的 PNG 文件,并在 ImageButton 中使用这样的 PNG 文件(具有方法“setImageBitmap(Bitmap bm)”),我需要解码 PNG 图像我的 res/drawable 文件中有。但是,当我复制路径并尝试像这样解码它时:

public Bitmap getBitMap() {
    return BitmapFactory.decodeFile("drawable/bishop00.png");
}

我看到一些线程说我也可以使用 BitmapFactory 的“decodeResources”方法,但是此代码不在 Activity 中,并且我不希望使用 Activity 作为参数来仅使用该方法,请参阅因为这应该有效。我也尝试过使用绝对路径(复制显示系统整个层次结构的路径),但仍然出现以下异常:

Unable to decode stream: java.io.FileNotFoundException

真的希望得到一些帮助,因为我完全确定该文件存在。

最佳答案

I am trying to use a PNG file from my res/drawable folder within my Android project

这是您的开发计算机上的一个文件。它不是 Android 设备上的文件。

seeing as this should work

不,不应该。

I saw some threads that said that I could also use the "decodeResources" method of BitmapFactory

这是正确的答案,假设该内容首先应该是可绘制资源。虽然使用 decodeResource() 有一些合理的理由,但总体来说它并不常用。可能还有其他更合适的使用可绘制资源的方法,或者这可能首先不应该是可绘制资源。

but this code is not in an activity

decodeResource() 采用 Context。它不一定是Activity,尽管它通常是一个可能的候选者。您的所有代码都沿着以 Context 开头的某个代码路径执行;在这里使用它应该没有问题。

关于java - 位图工厂抛出 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39604596/

相关文章:

Java:如何根据选择项目菜单或JTree节点来更改JPanel的内容?

c# - System.Drawing.Image 和 System.Drawing.Bitmap 有什么区别?

android - 使位图的某些区域在触摸时透明 --> 再次

Java从文本文件中读取

java - 如何从 Firebase ListView 中的管理员帐户中删除用户帐户?

Java 并发 - 管理线程生命周期(启动/停止)的更好设计方法

android - taskSnapshot.getDownloadUrl() 方法不起作用

android - PendingIntent 不适用于通知

java - 什么是资源:0 doing?

c# - 在C#中将字符串转换为位图