ios - 快速将多个图像与一组图像进行比较
问题描述
我有 2 个 UIImageViews 连接到一组图像,我正在尝试在它们显示后进行比较,但似乎不起作用。我尝试使用 imageArray[Image Literal] 和 imageArray[image1.png, image2.png, image3.png, image4.png, image5.png] 我不确定我做错了什么。我不是在寻找代码,尽管它可能会有所帮助,但我正在寻找的是有人引导我走向正确的方向
@IBOutlet weak var 1ImageView: UIImageView!
@IBOutlet weak var 2ImageView: UIImageView!
let imageArray = [image1.png, image2.png, image3.png, image4.png, image5.png]
func any() {
if (1ImageView != nil) && (2ImageView != nil) && isEqual(image1.png) {
print("match!")
} else if ...// more if statements
…last if statement} else {
print(“no match!”)
}
@IBAction func buttonPressed(_ sender: IUButton) {
any()
}
如果这是不可能的,有没有办法为数组中的每个图像分配一个标识符.. 对不起,额外的问题。使用 NSData 比较 2 个图像有一个答案,但我不确定如何将它实现到数组中。谢谢和抱歉,但新手问题。
解决方案
image.isEqual(image)
尽管文件说了什么,但似乎不可靠。如果您不需要进行像素完美比较,将图像转换为数据并进行比较就足够了。
let image1 = UIImage(named: "image1.png")
let image2 = UIImage(named: "image2.png")
let imageData1 = image1?.pngData()
let imageData2 = image2?.pngData()
if imageData1 == imageData2 {
print("images are the same")
} else {
print("images are different")
}
在数组中查找特定图像可以建立在此基础上:
// array of images referencing image files within an Xcode project
// it's not the best idea to force unwrap those, but for the sake of simplicity
let imageArray = [UIImage(named: "image1.png")!,
UIImage(named: "image2.png")!,
UIImage(named: "image3.png")!,
UIImage(named: "image4.png")!,
UIImage(named: "image5.png")!]
func anySimilarImages() {
// find first image which is the same as 1ImageView's
let 1ImageViewImage: UIImage? = imageArray.first { (image) -> Bool in
return image.pngData() == 1ImageView.image?.pngData()
}
// find first image which is the same as 2ImageView's
let 1ImageViewImage: UIImage? = imageArray.first { (image) -> Bool in
return image.pngData() == 2ImageView.image?.pngData()
}
if 1ImageViewImage != nil && 2ImageViewImage != nil {
print("both images were found")
}
else if 1ImageViewImage != nil {
print("first image was found")
}
else if 2ImageViewImage != nil {
print("second image was found")
}
else {
print("no image was found")
}
}
推荐阅读
- r - 如何在 R 中计算曼肯德尔统计
- java - 使用生产者-消费者模式的多代理系统?
- java - 使用精灵边框而不是矩形或圆形的精灵之间的 Libgdx 碰撞检测
- javafx - 我如何在 java FX 中创建一个阶段,强制用户首先关闭它以执行其他任何操作?
- python - groupby 和 sum 两列并在 pandas 中设置为一列
- python - os.getenv() 没有提取我之前声明的变量
- html - 表单提交到文本字段
- c# - 由于保护级别,不能在同一命名空间中使用公共类的构造函数?
- python - 如何在python中删除打印的文本并将其替换为另一个文本
- android - 来自 Palette 的 Widget 或组件(例如 Rating Bar)在设计视图或 Android Studio 的蓝图中不可见