我需要检查加载到UIImage目标文件中的文件是否等于另一个图像并执行某些操作(如果是这样).不幸的是,它没有用.
emptyImage = UIImage(named: imageName)
if(image1.image != emptyImage) {
// do something
} else {
// do something
}
Run Code Online (Sandbox Code Playgroud)
上面的代码总是进入if分支.
aah*_*ens 12
您可以将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
}
}
Run Code Online (Sandbox Code Playgroud)
Vic*_*ler 10
您无法UIImage使用!=或==运算符比较两个对象,一个选项是NSData使用将UIImagePNGRepresentation其转换为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)
}
Run Code Online (Sandbox Code Playgroud)
我希望这对你有帮助.
你可以进一步实现相等运算符的实现UIImage,这将在比较图像时简化你的逻辑:
func ==(lhs: UIImage, rhs: UIImage) -> Bool {
if let lhsData = UIImagePNGRepresentation(lhs), let rhsData = UIImagePNGRepresentation(rhs) {
return lhsData == rhsData
}
return false
}
Run Code Online (Sandbox Code Playgroud)
这也使!=操作员能够上电UIImage.
| 归档时间: |
|
| 查看次数: |
6514 次 |
| 最近记录: |