【发布时间】:2015-12-02 21:20:52
【问题描述】:
我需要比较大约 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");
}
我在比较中做错了什么,或者如何在不占用计算机处理器的情况下比较图像?
【问题讨论】:
-
您需要仔细考虑并定义什么是“等于”。黑色 32x32 像素 GIF 和黑色 32x32 PNG 是否相等?两个外观相同但在不同日期创建的 PNG 文件是否相等?然后你可以决定你的策略 - 是否简单地计算所有图像的 MD5 校验和并通过
uniq或其他方式运行它们。 -
@MarkSetchell 但这是不消耗所有处理器和内存的最佳方法?
-
你需要先回答另一个问题!最简单的方法是计算每个文件的校验和一次并将它们全部存储在一个列表中,然后在列表中查找重复项 - 但如果您希望将黑色 GIF 识别为匹配相同大小的黑色PNG...
-
@MarkSetchell 所有图片都是 jpg 我比较 jpg 和 jpg 是彩色图片
标签: macos xcode7 nsdata nsimage