我需要比较有关2000张图像的图像,但是使用所有处理器循环到图像中。
以下是我比较图像的方法:
NSImage *file = [[NSImage alloc] initWithContentsOfFile:path];
NSImage *fileTwo = [[NSImage alloc] initWithContentsOfFile:pathTwo];
NSData *imgDataOne = [file TIFFRepresentation];
NSData *imgDataTwo = [fileTwo TIFFRepresentation];
if ([imgDataOne isEqualToData: imgDataTwo])
{
NSLog(@"is the same image");
}
我在比较中做错了什么,或者如何在不接管计算机处理器的情况下比较图像?
答案 0 :(得分:2)
最快的方法是获取所有文件的列表,然后为每个文件获取其大小,然后说不同大小的文件不能相等。这很快,因为它甚至不需要你从磁盘读取文件。
一旦找到两个或更多相同大小的文件,你可以通过MD5校验它们以查看内容是否相同 - 如果你在计算它们时存储MD5校验和,它再次比比较每对文件更快你只读过一次文件。
当然不需要为每个文件创建TIFFRepresentation ......