быстрое сравнение нескольких изображений с массивом изображений - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть 2 UIImageView, подключенных к массиву изображений, которые я пытаюсь сравнить, как только они отображаются, но, похоже, не работает.Я попытался использовать 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, но я не уверен, как реализовать это в массив.спасибо и извините, но вопрос новичка.

1 Ответ

0 голосов
/ 23 февраля 2019

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")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...