UIImage 等于
UIImage is equal to
我需要检查加载到 UIImage
目标文件中的文件是否等于另一个图像,如果是,则执行一些操作。不幸的是,它不起作用。
emptyImage = UIImage(named: imageName)
if(image1.image != emptyImage) {
// do something
} else {
// do something
}
以上代码总是进入if
分支。
您不能使用 !=
或 ==
运算符比较两个 UIImage
对象,一种选择是使用 UIImagePNGRepresentation
将其转换为 NSData
进行比较到 NSData
个对象,如以下代码所示:
func areEqualImages(img1: UIImage, img2: UIImage) -> Bool {
guard let data1 = UIImagePNGRepresentation(img1) else { return false }
guard let data2 = UIImagePNGRepresentation(img2) else { return false }
return data1.isEqualToData(data2)
}
希望对你有所帮助。
您可以将 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
}
}
您可以在 UIImage
上实现相等运算符,这将简化您在比较图像时的逻辑:
func ==(lhs: UIImage, rhs: UIImage) -> Bool {
lhs === rhs || lhs.pngData() == rhs.pngData()
}
运算符比较 PNG 表示,如果参数指向相同的 UIImage
实例,则使用快捷方式
这还会在 UIImage
上启用 !=
运算符。
请注意,.pngData
调用和 byte-to-byte 比较可能是一项耗时的操作,因此在尝试比较大图像时要小心。
我需要检查加载到 UIImage
目标文件中的文件是否等于另一个图像,如果是,则执行一些操作。不幸的是,它不起作用。
emptyImage = UIImage(named: imageName)
if(image1.image != emptyImage) {
// do something
} else {
// do something
}
以上代码总是进入if
分支。
您不能使用 !=
或 ==
运算符比较两个 UIImage
对象,一种选择是使用 UIImagePNGRepresentation
将其转换为 NSData
进行比较到 NSData
个对象,如以下代码所示:
func areEqualImages(img1: UIImage, img2: UIImage) -> Bool {
guard let data1 = UIImagePNGRepresentation(img1) else { return false }
guard let data2 = UIImagePNGRepresentation(img2) else { return false }
return data1.isEqualToData(data2)
}
希望对你有所帮助。
您可以将 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
}
}
您可以在 UIImage
上实现相等运算符,这将简化您在比较图像时的逻辑:
func ==(lhs: UIImage, rhs: UIImage) -> Bool {
lhs === rhs || lhs.pngData() == rhs.pngData()
}
运算符比较 PNG 表示,如果参数指向相同的 UIImage
实例,则使用快捷方式
这还会在 UIImage
上启用 !=
运算符。
请注意,.pngData
调用和 byte-to-byte 比较可能是一项耗时的操作,因此在尝试比较大图像时要小心。