我需要检查加载到UIImage
目标文件中的文件是否等于另一个图像并执行某些操作(如果是这样)。不幸的是,它没有用。
emptyImage = UIImage(named: imageName)
if(image1.image != emptyImage) {
// do something
} else {
// do something
}
以上代码始终进入if
分支。
答案 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
运算符。