3 回答

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

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
Swift實(shí)現(xiàn):
func image(image1: UIImage, isEqualTo image2: UIImage) -> Bool {
let data1: NSData = UIImagePNGRepresentation(image1)!
let data2: NSData = UIImagePNGRepresentation(image2)!
return data1.isEqual(data2)
}
或者通過基于@nhgrif的建議擴(kuò)展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貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
將Mark Tickner的解決方案更新為Swift 4
import UIKit
extension UIImage {
func isEqualToImage(_ image: UIImage) -> Bool {
let data1 = self.pngData()
let data2 = image.pngData()
return data1 == data2
}
}
這兩個(gè)變量可能是過大的,但它們可能有助于向新手解釋??梢钥s短為:
import UIKit
extension UIImage {
func isEqualToImage(_ image: UIImage) -> Bool {
return self.pngData() == image.pngData()
}
}
- 3 回答
- 0 關(guān)注
- 723 瀏覽
添加回答
舉報(bào)