繁体   English   中英

将照片保存到相机胶卷并返回网址

[英]Save photo to camera roll and return url

我正在尝试将base64图像保存到相机胶卷中,并返回保存图像的URL。 只要我成功保存到相机胶卷中,代码就可以正常工作,但是我看到一个错误,没有返回URL。 错误是:

Error Domain=NSCocoaErrorDomain Code=-1 "(null)"

我的代码是:

- (void)saveImageDataToLibrary:(CDVInvokedUrlCommand*)command
{

    __block CDVPluginResult* result = nil;

    NSData* imageData = [NSData dataFromBase64String:[command.arguments objectAtIndex:0]];

    UIImage* image = [[[UIImage alloc] initWithData:imageData] autorelease];

    __block PHObjectPlaceholder *placeholderAsset = nil;

    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

        PHAssetChangeRequest *newAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];

        placeholderAsset = newAssetRequest.placeholderForCreatedAsset;

    } completionHandler:^(BOOL success, NSError *error) {
        if(success){
            NSLog(@"worked");
            PHAsset *asset = [self getAssetFromlocalIdentifier:placeholderAsset.localIdentifier];

            PHContentEditingInputRequestOptions *options = [[PHContentEditingInputRequestOptions alloc] init];
            options.networkAccessAllowed = YES; //download asset metadata from iCloud if needed

            [asset requestContentEditingInputWithOptions:options
                completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
                NSURL *assetURL = contentEditingInput.fullSizeImageURL;
                NSString* url = [assetURL absoluteString];
                NSLog(@"our result is: %@", url);

                result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:url];
                [self invokeCallback:command withResult:result];

            }];

        } else {
            NSLog(@"Error: %@", error);
            result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:error.description];
            [self invokeCallback:command withResult:result];
        }
    }];

}

- (void) invokeCallback:(CDVInvokedUrlCommand *)command withResult:(CDVPluginResult *)result {
    [self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
}

尝试使用: PHContentEditingOutput

该对象具有一个名为的属性: renderedContentURL

使用它来获取您的PHAsset的适当URL。

因此,要获取URL,您的代码应如下所示:

PHContentEditingOutput *contentEditingOutput = [[PHContentEditingOutput alloc] initWithContentEditingInput:YOUR_PHCONTENTEDITING_INPUT];

NSURL *myPHAssetURL = [contentEditingOutput renderedContentURL];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM