如何快速从文件夹中获取随机图像?

Posted

技术标签:

【中文标题】如何快速从文件夹中获取随机图像?【英文标题】:How to get a random image from a folder in swift? 【发布时间】:2016-08-06 21:33:15 【问题描述】:

到目前为止,我已经创建了一个图像文件夹,并且可以将其中 1 个图像分配给 UIImageView

但是我现在要做的是创建一个随机生成器,它将从文件夹中选择一个随机图像,所以如果我要创建一个按钮,我可以在单个 @987654324 上分别随机显示所有图像@。

但是,这个文件夹将包含 100 多个图像,所以我不想将每个图像硬编码到一个数组中。此外,图像的名称对于图像本身必须是唯一的。

我一直在网上搜索,但找不到有关如何编写适合我需要的代码的信息。那么如何快速从文件夹中获取并显示随机图像?

【问题讨论】:

只需获取您的文件夹内容(网址数组)并随机选择一个 ***.com/questions/27259332/…***.com/questions/27721418/… 【参考方案1】:

你可以这样命名你的图片

image_0
image_1
image_2

然后使用此代码填充您的UIImageView

let numberOfImages: UInt32 = 100
let random = arc4random_uniform(numberOfImages)
let imageName = "image_\(random)"
imageView.image = UIImage(named: imageName)

更新

由于您不想重命名图像,您可以创建一个 plist 文件(类型为 Array),在其中放置图像的所有名称

最后

func loadRandomImage() 
    let path = NSBundle.mainBundle().pathForResource("Images", ofType: "plist")!
    let names = NSArray(contentsOfFile: path) as! [String]
    let random = Int(arc4random_uniform(UInt32(names.count)))
    let imageName = names[random]
    imageView.image = UIImage(named: imageName)

【讨论】:

名称无关紧要,只需获取您的文件夹内容,使用它的计数来限制生成的随机索引。 ***.com/questions/27259332/… @AndrewMontague:你在使用Assets.xcassets吗?出于多种原因,您应该将图片放在此处 @AndrewMontague:使用 Assets.xcassets 很重要,尤其是在您制作游戏时。 @AndrewMontague:我在答案中添加了一个新部分,请查看。或尝试 @Leo Dabus 建议的解决方案。 谢谢,这个方法完全符合我的要求,非常感谢你的帮助!【参考方案2】:

您需要创建一个字符串文件名数组并从数组中选择一个随机文件名,或者您需要使用文件管理器 (NSFileManager) 获取文件夹中的文件列表,然后从中选择大批。下界非常难。

【讨论】:

以上是关于如何快速从文件夹中获取随机图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何从图像中获取随机边界框? (Python)

如何让我的机器人从一组图像中选择一个随机图像

如何从 Open Office 中的随机图像 <img> 标签中提取文件名

从数组中显示带有名称的随机图像。 (SwiftUI)

如何从文件中获取随机结构?

如何从 JSON 文件中随机获取并将其呈现为 FlatList?