我有两个图像数组,我想要比较两个数组中的图像是否相同,如何比较两个UIImage对象.. ??
for (int i=0; i< imageArray_1.count; i++) {
for (int j=0; j< imageArray_2.count; j++) {
if ([[imageArray_1 objectAtIndex:i]isEqualToData:[imageArray_2 objectAtIndex:j]]) {
NSLog(@"Matched");
}
else{
NSLog(@"Not Matched");
}
}
}
它不适合我,任何建议将不胜感激。提前谢谢。
答案 0 :(得分:1)
无需转换图像,然后每次都进行比较。你应该使用crypto框架中的hash。例如:
unsigned char result[16];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(inImage)];
CC_MD5([imageData bytes], [imageData length], result);
NSString *imageHash = [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
修改强>
(此代码也来自SO,但我在我的应用程序中使用,我无法链接原始问题;)
答案 1 :(得分:1)
这对我有用:
NSData *freeImageData=[NSData dataWithContentsOfFile:@"free.png"];
NSData *noImageData=[NSData dataWithContentsOfFile:@"no.png"];
if([[NSData noImageData] isEqual:freeImageData])
{
....
}
答案 2 :(得分:0)
使用此方法:
- (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
{
NSData *data1 = UIImagePNGRepresentation(image1);
NSData *data2 = UIImagePNGRepresentation(image2);
return [data1 isEqual:data2];
}
在这里回答: