Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从iOS中的相机卷获取特定图像_Ios_Objective C_Iphone_Xcode - Fatal编程技术网

从iOS中的相机卷获取特定图像

从iOS中的相机卷获取特定图像,ios,objective-c,iphone,xcode,Ios,Objective C,Iphone,Xcode,目前,我正在使用UIImageWriteToSavedPhotosAlbum在点击特定按钮时从特定url保存图像。图像已成功保存 现在,稍后我想从相机滚动相册iOS中点击相同按钮检索相同的图像。我不想再次调用图像的url 如何使用Objective-C实现这一结果 [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:url options:0

目前,我正在使用UIImageWriteToSavedPhotosAlbum在点击特定按钮时从特定url保存图像。图像已成功保存

现在,稍后我想从相机滚动相册iOS中点击相同按钮检索相同的图像。我不想再次调用图像的url

如何使用Objective-C实现这一结果

 [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:url
                             options:0
                            progress:^(NSInteger receivedSize, NSInteger expectedSize) {

                            }
                           completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
                               if (image && finished) {
                                   UIImageWriteToSavedPhotosAlbum(image,self,
                                       @selector(image:didFinishSavingWithError:contextInfo:),
                                                                      nil);
                               }
                           }];

您必须使用照片框架保存,而不是使用UIImageWriteToSavedPhotosAlbum

获取图像后,使用照片框架保存图像,如下所示。

__block PHObjectPlaceholder *placeholderAsset;

    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

       PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
       placeholderAsset = changeRequest.placeholderForCreatedAsset;

    } completionHandler:^(BOOL success, NSError *error) {
        if (success) {
            NSLog(@"Success");

            // Save Identifier here
            [[NSUserDefaults standardUserDefaults] setObject:placeholderAsset.localIdentifier forKey:@"PhotoIdentifier"];
        }
        else {
            NSLog(@"write error : %@",error);
        }
    }];
//使用标识符检索图像

PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init];
allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
PHFetchResult *allPhotos = [PHAsset fetchAssetsWithOptions:allPhotosOptions];

[allPhotos enumerateObjectsUsingBlock:^(PHAsset   * _Nonnull photoAsset, NSUInteger idx, BOOL * _Nonnull stop) {

    NSString *photoIdentifier = [[NSUserDefaults standardUserDefaults] objectForKey:@"PhotoIdentifier"];
    if([photoIdentifier isEqualToString:photoAsset.localIdentifier]){

        [[PHImageManager defaultManager]requestImageForAsset:photoAsset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:nil resultHandler:^(UIImage *result, NSDictionary *info){
            if ([info objectForKey:PHImageErrorKey] == nil && ![[info objectForKey:PHImageResultIsDegradedKey] boolValue]) {

                // image is here as a result parameter
                *stop = YES;
            }
        }];
    }
}];

您可以使用任何其他介质来存储照片标识符,NSUserDefaults只是一个例子。

您可以发布代码吗?改用ALAssestLibrary方法,您将拥有更多的控制权。@elio.d-但此库已从当前版本的iOS中弃用。@RohitaxRajguru弃用不表示您不能使用它。无论如何,请使用作为替代品的PhotoFramework。@KamleshShingarakhiya:添加了上述代码。