2012-08-01 76 views

回答

2

如果图像预计完全相同,没有重新压缩或任何其他内容,则可以同时加载NSData对象并将其与isEqualToData:进行比较。

如果它们可能具有不同的元数据,但图像仍然相同,则可以将它们加载为图像并使用与此类似的解码比较实际图像像素:How to get pixel data from a UIImage (Cocoa Touch) or CGImage (Core Graphics)?

如果它们是相似的,但也可以是不同的格式或再压缩,那么你需要的图像比较软件,例如OpenCV

+0

比较图像数据工作得很好!谢谢! – Shredder2794 2012-08-02 00:51:57

2

使用的答案如果你想知道,如果它是相同图像,那么你应该只使用一个哈希函数。

如果您有什么散列函数应该使用,那么你甚至可以让服务器决定送你的图像的哈希值,并将其与图像的本地哈希值,而不是向您发送图像本身比较。

如果散列匹配,那么就没有必要下载图像的。另一方面,如果哈希值不同,则您知道需要下载新映像。

+1

我认为,更好的方法可能是计算本地图像的哈希值,并将其发送到服务器的图像请求的一部分。然后,服务器将响应图像或HTTP代码304(未修改)。客户应该知道他可以使用存储的图像。 – Ariel 2012-08-01 10:34:29