gpt4 book ai didi

iphone - 收到的文件存在于照片库中

转载 作者:行者123 更新时间:2023-12-03 21:18:39 24 4
gpt4 key购买 nike

我需要检查收到的文件是否存在于照片库中

下面让我解释一下

我通过 Wifi 网络将一张照片库图像/视频从一台 Ipad(发送方)传输/同步到另一台 Ipad(接收方)照片库。

我成功完成了。

但是,我不需要接收设备的照片库中存在重复文件。

因此,我创建了一个 MD5 字符串,该字符串对于文件(在发送方)始终是唯一的,并在传输文件之前将其发送到学习者方。

在接收方,从发送方收到 MD5 字符串(收到的 MD5)后,我使用 ALAsset Library 检索所有照片库文件,并为每个文件创建一个 MD5 字符串,这可能需要更多时间。将每个 MD5 字符串与接收到的MD5字符串。

如果接收方照片库文件中的任意一个与接收到的MD5相同,则可以识别该文件存在于接收方照片库中。

处理速度与照片库中的文件数量有关。

如果照片库中的文件数量大于 100,则上述过程太慢。

这样我就知道还有其他方法/方式可以做到这一点。主要是我需要提高性能。请给我一个更好的概念。

我的代码

<小时/>
-(void)getAllURLofPhotLibraryImages:(NSString*)receivedImageFileMd5 {

if(urlStoreArr == nil){

urlStoreArr = [[NSMutableArray alloc] init];
}


void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL) {
NSLog(@"See Asset: %@", result);
// assets is a NSMutableArray..



// Here storing the asset's image URL's in NSMutablearray urlStoreArr
NSURL *url = [[result defaultRepresentation] url];
[urlStoreArr addObject:url];
NSLog(@"Adding all the Photolibrary URL's");

}
};

void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop)
{

if(group != nil) {
[group enumerateAssetsUsingBlock:assetEnumerator];
}
else {
NSLog(@"going to check FileExistInPhotoLibrary");
[self CheckFileExistInPhotoLibrary:receivedImageFileMd5];
//call the method from here.
}

};

ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
[assetslibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");

}];


}





-(void)CheckFileExistInPhotoLibrary:(NSString *)receivedImageFileMd5{

if([urlStoreArr count] == 0){

NSLog(@"file is not exist in PhotoLibrary");

return;
}

int j = 1;
isFileFoundInPhotoLib = NO;
for(int counts =0;counts<[urlStoreArr count];counts++)
{

NSLog(@"entered in to for loop");
NSLog(@"%d",[urlStoreArr count]);

typedef void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *asset);
typedef void (^ALAssetsLibraryAccessFailureBlock)(NSError *error);

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
ALAssetRepresentation *rep = [myasset defaultRepresentation];
CGImageRef iref = [rep fullResolutionImage];
if (iref) {
UIImage *photLibraryImage = [UIImage imageWithCGImage:iref];
if(photLibraryImage){

NSData *imageData = UIImagePNGRepresentation(photLibraryImage);



NSString *photLibImageMd5 = [self md5Image:imageData];//creating MD5 string for receiver side phpto library images.
NSLog(@"photolib MD5::%@",photLibImageMd5);
NSLog(@"ReceivedImageMD5:%@",receivedImageFileMd5);
if([photLibImageMd5 isEqualToString:receivedImageFileMd5])
{

NSLog(@"file is exist in PhotoLibrary");

return;
}
if(j == [urlStoreArr count]){
NSLog(@"file is not exist in PhotoLibrary");


}


}

}
};

//
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror)
{

[self RequestForTheFile:fileTransferResponse];
NSLog(@"booya, cant get image - %@",[myerror localizedDescription]);
};

ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
[assetslibrary assetForURL:[urlStoreArr objectAtIndex:counts]
resultBlock:resultblock
failureBlock:failureblock];
j++;


}
if(urlStoreArr != nil){
[urlStoreArr release];
NSLog(@"urlstore array released");
urlStoreArr = nil;
}



}

//Md5字符串创建方法

 -(NSString *) md5Image:(NSData *)data {
return [self md5:data];
}
- (NSString*)md5:(NSData *)data
{
unsigned char result[16];
CC_MD5( data.bytes, data.length, result ); // This is the md5 call
return [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]
];
}

最佳答案

我建议您使用 SHA-1 进行哈希处理。我相信它比 MD5 更快,而且您不必担心加密完整性,因为您没有保护任何东西,只是用它来生成唯一的 key 。

我的一个 friend 编写了一个有用的帮助器类,他们出于同样的原因在他们的应用程序 ( Sandvox ) 中使用它 - 看看两个文件是否相等。

看看KSCrypto在 GitHub 上。

关于iphone - 收到的文件存在于照片库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com