如何从 Bundle 中获取 PNG 文件的资源路径?

Posted

技术标签:

【中文标题】如何从 Bundle 中获取 PNG 文件的资源路径?【英文标题】:How to get resource path for PNG files from Bundle? 【发布时间】:2020-05-30 15:25:12 【问题描述】:

我正在尝试获取添加到项目中的图像文件的资源路径。以下代码适用于 jpeg 文件。但它为 PNG 文件提供 nil。图片名称正确,已添加到项目中。

使用puppy.pngcar.jpeg 名称添加图像文件。

let carPathURL = Bundle.main.path(forResource: "car", ofType: "jpeg") // Gives right path
let puppyPathURL = Bundle.main.path(forResource: "puppy", ofType: "png") // Gives nil

以下是应用程序包内容的屏幕截图。

项目的屏幕截图如下所示,显示了添加的文件。

为什么它对 PNG 文件给出 nil ?如何获取PNG文件的资源路径?

【问题讨论】:

在上面的代码中,您设置了 carPathURL 但转换了 imagePathURL。代码示例有点混乱。哪一行给出 nil,第二行还是第三行代码? @Marcy,感谢您指出。我已经更正了这个问题。第二行给出 nil。 以上屏幕截图中的puppy.png在哪里? @Rob,是的,它不存在,但为什么呢?我不确定。 @Rob,我用更新的项目截图编辑了这个问题。图像文件已添加。 【参考方案1】:

如果扩展名是大写的(即 PNG,而不是 png),则必须明确指定

Bundle.main.path(forResource: "puppy", ofType: "PNG")

【讨论】:

好点。我只是尝试了“png”和“PNG”,结果仍然为零。 @Shubham,您确定您已将此图像添加到测试目标吗?在 Finder 中打开构建的应用程序包内容并查看图像是否存在? 是的,它被添加到目标中。它还出现在 Copy Bundle Resources 部分下。 @Shubham,我相信奇迹,但不在这里))。您会通过 Finder 中的“显示包内容”附加到应用程序包内容的问题屏幕截图吗? 是的,我调查过了。并且 png 文件不存在。

以上是关于如何从 Bundle 中获取 PNG 文件的资源路径?的主要内容,如果未能解决你的问题,请参考以下文章

C++ GDI+如何从资源中获取和加载图像?

如何从 SwiftUI 中的 Bundle 中的有效路径或 URL 将图像加载到 Image()?

源码解析之访问osgi felix bundle中的文件和资源

android - 从库中获取资源ID

iOS之性能优化·内置图片瘦身

如何使用 bundle 一次从多个活动中获取数据