与NSData的图像比较

时间:2013-11-15 12:26:15

标签: ios objective-c uiimage

我有两个图像数组,我想要比较两个数组中的图像是否相同,如何比较两个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");
            }
        }
    }

它不适合我,任何建议将不胜感激。提前谢谢。

3 个答案:

答案 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];
}

在这里回答:

How to compare two UIImage objects