0

我有使用ELCImagePickerController. 我存储了网址以供将来参考。

我使用以下方法获取该 URL:

[dict valueForKey:UIImagePickerControllerReferenceURL];

现在问题出现了,一段时间后用户从照片库中删除了该特定图像,我将使用 URL 访问该图像。我的应用程序没有崩溃。

我试过使用 NSUrl 方法

[imagePath checkResourceIsReachableAndReturnError:&err]

我也尝试过类似的东西:

-(BOOL)findImage:(NSURL*)path
{
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
    __block BOOL flag=YES;
    ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
    {
        ALAssetRepresentation *rep = [myasset defaultRepresentation];
        CGImageRef iref = [rep fullScreenImage];
        if (iref) {
            flag=YES;
            dispatch_group_leave(group);
        }
    };
    ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
    {
        NSLog(@"cant get image - %@",[myerror localizedDescription]);
        flag=NO;
    };
    ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
    [assetslibrary assetForURL:path resultBlock:resultblock failureBlock:failureblock];

    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
    dispatch_release(group);
    [assetslibrary release];

    return flag;
}

示例网址:

assets-library://asset/asset.JPG?id=E862927E-E646-448A-9EB6-A7D48668B3DC&ext=JPG

但没有成功。

如何知道特定 URL 中存在的图像。

如果有人可以帮助我解决这个问题,那将是不胜感激的。

提前致谢。

4

2 回答 2

1

解决了改变findImage方法的问题

-(BOOL)findImage:(NSURL*)path
{
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
    __block BOOL flag=YES;
    ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
    [assetslibrary assetForURL:path resultBlock:^(ALAsset *asset) {
        if (asset==nil)
        {
            flag=NO;
        }
        else
        {
            flag=YES;
        }
            dispatch_group_leave(group);
        } failureBlock:^(NSError *error){
                NSLog(@"operation was not successfull!");
                dispatch_group_leave(group);
    }];
    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
    dispatch_release(group);
    [assetslibrary release];
    return flag;
}
于 2013-05-29T13:24:39.513 回答
1

对于这种情况,您需要检查 ALAssetRepresentation *rep = [myasset defaultRepresentation] 为 nil。

if(rep != nil){ //write your code.. }

于 2013-05-29T12:30:19.727 回答