UIImage等于

时间:2016-01-12 19:50:02

标签: swift uiimage

我需要检查加载到UIImage目标文件中的文件是否等于另一个图像并执行某些操作(如果是这样)。不幸的是,它没有用。

emptyImage = UIImage(named: imageName)

if(image1.image != emptyImage) {
    // do something
} else {
    // do something
}

以上代码始终进入if分支。

3 个答案:

答案 0 :(得分:11)

您可以将UIImage个实例转换为NSData个实例并进行比较。

if let emptyImage = UIImage(named: "empty") {
    let emptyData = UIImagePNGRepresentation(emptyImage)
    let compareImageData = UIImagePNGRepresentation(image1.image)

    if let empty = emptyData, compareTo = compareImageData {
        if empty.isEqualToData(compareTo) {
            // Empty image is the same as image1.image
        } else {
            // Empty image is not equal to image1.image
        }
    } else {
        // Creating NSData from Images failed
    }
}

答案 1 :(得分:8)

您无法使用UIImage!=运算符比较两个==个对象,一个选项使用NSData进行比较UIImagePNGRepresentation将其转换为{ {1}}对象,如下面的代码所示:

NSData

我希望这对你有所帮助。

答案 2 :(得分:7)

你可以在UIImage上更进一步实现相等运算符,这将在比较图像时简化你的逻辑:

func ==(lhs: UIImage, rhs: UIImage) -> Bool {
    if let lhsData = UIImagePNGRepresentation(lhs), let rhsData = UIImagePNGRepresentation(rhs) {
        return lhsData == rhsData
    }
    return false
}

这也可以在!=上启用UIImage运算符。