我在网上搜索并没有找到答案,所以我想我最后一次在这里拍摄。 在我的应用程序中,用户可以从照片库中选择图像。我不希望用户能够选择相同的图片两次,所以我正在寻找一种识别图像并将其与已经选择的图像进行比较的方法。据我所知,一个人无法从库中获取图像的URL或任何其他标识符,所以我有点卡住了。我想到的一种(也许)可能的方式是比较MD5-Checksums,但我认为这是昂贵的。
非常感谢您的帮助,请原谅我生锈的英语。
Muckz
答案 0 :(得分:2)
使用imagePickerController委托。这是一个示例代码,
-(void) imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image=[[UIImage alloc] init];
image=[info objectForKey:UIImagePickerControllerOriginalImage];
//store the image
//comparision code
}
答案 1 :(得分:1)
除非它实际上非常慢,否则MD5-Checksums可能是最好的方法。这样,您无需保留所有先前选择的图像以便能够进行比较。你只需要保持其校验和。
另一种可能性是随机选择几个像素并保存其位置和颜色值。然后,当选择新的图表时,您可以验证先前保存的像素/颜色不匹配。这种方法可能会失败,但它可能足够好而且速度很快。
答案 2 :(得分:0)
如果您使用UIImagePickerControllerDelegate协议,则有一种方法imagePickerController:didFinishPickingMediaWithInfo:
。调用此方法时,将信息NSDictionary存储在一个数组中(可能在您的App Delegate中)。如果选择了另一个图像,请将选定的NSDictionary与您使用isEqualToDictionary:
存储的先前图像进行比较。 没有两个图像具有相同的元数据。(元数据仅适用于新捕获的媒体。)
答案 3 :(得分:0)
将您的Image放入NSMutableArray然后当用户选择另一个时间时检查选择是否在数组中...
答案 4 :(得分:-1)
如果你有一个指向ImageView的指针,那么这样做的一个非常快速且便宜的便宜方法是将.tag
的{{1}}设置为1,然后选中它{ {1}}