如何在Swift中从文件夹中获取UIImage的数组?

我有一个这样的普通Xcode项目…

在这里输入图像说明

注意有一个文件夹(这是一个实际的文件夹 – 不只是一个组)名为“图像”。 它包含25个“.png”图像。

我想要做的就是用这些图像中的每一个制作一个UIimage 数组

(甚至,图像名称或类似的数组,这将是很好的 – 那么可以加载它们的UIImage(named:

我如何获得该文件夹“图像”? 那么子文件夹“图像/汽车”呢?

我尝试了这样的东西,但没有发现

 override func viewDidLoad() { let imageArray = NSBundle.mainBundle().URLsForResourcesWithExtension( "png", subdirectory: "images") print("test...") for n:NSURL in imageArray! { print("found ..." ,n) } } 

我们假设图片位于应用的资源包中。 如果不是,则需要确保目标的“构build阶段”中的“复制软件包资源”中列出了您的映像目录。

在这里输入图像说明

编辑这只是要将图像复制到应用程序包,如果您需要将文件夹复制到应用程序包下面的代码然后请使用StackOverflow问题,以正确设置它。

这给了我们一个URL的数组,然后我们可以使用UIImage(data :)和NSData(contentsOfURL :)在需要时创build图像。

获取包的资源path并追加图像目录,然后获取目录的内容。

  if let path = NSBundle.mainBundle().resourcePath { let imagePath = path + "/images" let url = NSURL(fileURLWithPath: imagePath) let fileManager = NSFileManager.defaultManager() let properties = [NSURLLocalizedNameKey, NSURLCreationDateKey, NSURLLocalizedTypeDescriptionKey] do { let imageURLs = try fileManager.contentsOfDirectoryAtURL(url, includingPropertiesForKeys: properties, options:NSDirectoryEnumerationOptions.SkipsHiddenFiles) print("image URLs: \(imageURLs)") // Create image from URL var myImage = UIImage(data: NSData(contentsOfURL: imageURLs[0])!) } catch let error1 as NSError { print(error1.description) } } 

乔。

请尝试以下操作:

我现在的情况如下。 在这里input图像描述

  1. 你必须注册你的图像“复制束资源”。

  2. 您必须在主Bundle中添加filter模块。 在这里input图像描述

它也在我身边工作。 也许你可以把filter从“jpg”格式改成“png”格式。

我以后在iOS 10.x,Swift 3.0和xcode 8.1版本上testing过。 如果您有任何问题,请与我联系。

我build议不要一次加载所有的图像到一个数组中。 图像往往很大,很容易耗尽内存和崩溃。

除非你必须一次把所有的图像都放在内存中,否则最好保存一组path或URL,并根据需要一次加载一个图像。

假设文件夹已满,您可以使用NSBundle方法URLsForResourcesWithExtension:subdirectory:为图像子目录中的所有文件获取一个NSURL数组,或者使用特定的文件types或所有文件(如果你通过零延长。)

一旦你有一个文件的URL数组,你可以映射到一个path的数组,如果需要,然后映射到一个图像数组。