【问题标题】:swift compare multiple images to an array of images快速将多个图像与图像数组进行比较
【发布时间】:2019-02-22 00:55:20
【问题描述】:

我有 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 个图像有一个答案,但我不确定如何将它实现到数组中。 谢谢和抱歉,但新手问题。

【问题讨论】:

  • 问题有点不清楚。比较的目的是什么?此外,如果您知道如何比较两个图像,那么在数组中查找图像应该没有问题(这里有很多关于通过数组/集合进行搜索的帖子)。
  • 我试图弄清楚如何比较数组中的多个图像。我的帖子中没有任何地方说我知道,这就是我要问的原因。是的,我可能检查了 100 多个帖子,其中大多数是针对其他语言或 obj-c 或 Java 的。甚至您在这些问题中的回复也没有帮助您刚刚在此处发布的相同类型的回复。
  • there is one answer on comparing 2 images using NSData - 我假设既然你知道那个答案,你就会知道如何比较两张图片。一旦你知道如何比较两张图片,搜索一组图片就不会很复杂了。
  • 关注Link,希望这能解决您的问题。

标签: ios swift uiimageview


【解决方案1】:

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")
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多