3 回答

TA貢獻1880條經驗 獲得超4個贊
一種方法是先將它們轉換為圖像數據,然后進行比較。
- (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
{
NSData *data1 = UIImagePNGRepresentation(image1);
NSData *data2 = UIImagePNGRepresentation(image2);
return [data1 isEqual:data2];
}

TA貢獻1966條經驗 獲得超4個贊
Swift實現:
func image(image1: UIImage, isEqualTo image2: UIImage) -> Bool {
let data1: NSData = UIImagePNGRepresentation(image1)!
let data2: NSData = UIImagePNGRepresentation(image2)!
return data1.isEqual(data2)
}
或者通過基于@nhgrif的建議擴展UIImage:
import UIKit
extension UIImage {
func isEqualToImage(image: UIImage) -> Bool {
let data1: NSData = UIImagePNGRepresentation(self)!
let data2: NSData = UIImagePNGRepresentation(image)!
return data1.isEqual(data2)
}
}

TA貢獻1829條經驗 獲得超13個贊
將Mark Tickner的解決方案更新為Swift 4
import UIKit
extension UIImage {
func isEqualToImage(_ image: UIImage) -> Bool {
let data1 = self.pngData()
let data2 = image.pngData()
return data1 == data2
}
}
這兩個變量可能是過大的,但它們可能有助于向新手解釋??梢钥s短為:
import UIKit
extension UIImage {
func isEqualToImage(_ image: UIImage) -> Bool {
return self.pngData() == image.pngData()
}
}
- 3 回答
- 0 關注
- 714 瀏覽
添加回答
舉報