7

我正在尝试开发一个应用程序,该应用程序将下载图像(从摄影站点)并为每个图像创建一个 ALAsset,然后将它们放在一个新的 ALAssetsGroup 下。

我能够创建一个新专辑 (ALAssetsGroup) 并从网站下载数据。但是我对如何创建新的 ALAsset 有点坚持。

我试过如下

            ALAsset *asset = [[[ALAsset alloc] init] autorelease];
            NSDictionary *metadata = [NSDictionary dictionaryWithObjectsAndKeys:p.id, @"id", p.thumbnail_url, @"thumbnail_url", p.photo_url, @"photo_url", nil];
            [asset setImageData:data metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
                ESLog(@"Asset %@ created error:%@", assetURL, error);
                [group addAsset:asset];
            }];

但是,我得到了assetURL 和error 都为空的打印件。

2012-04-15 02:58:06.850 XXXXXX.com[5966:c607] Asset (null) created error:(null)

如果有人可以建议我如何在相册中创建新资产,那就太好了

4

3 回答 3

6

你不能像那样创建一个新的 ALAsset。您需要做的是使用以下方法将图像数据保存到 Photo-Library:

- (void)writeImageDataToSavedPhotosAlbum:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock

完成块将返回新创建资产的 NSURL。使用方法

- (void)assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock

使用 NSURL 将返回新创建资产的 ALAsset 实例。

干杯。

亨德里克

于 2012-04-18T20:41:03.113 回答
1

您可以使用该UIImageWriteToSavedPhotosAlbum功能将 保存UIImage到相机的翻转中。

void UIImageWriteToSavedPhotosAlbum (
   UIImage  *image,
   id       completionTarget,
   SEL      completionSelector,
   void     *contextInfo
);

此处对其进行了描述。

然后你可以从资源库中获取它。

于 2012-09-08T17:59:06.217 回答
1

更容易使用以下代码:

    //Save to photo album
    UIImage *img = [[[UIImage alloc] initWithData:imageData] autorelease];
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library writeImageToSavedPhotosAlbum:img.CGImage
                                 metadata:[info objectForKey:UIImagePickerControllerMediaMetadata]
                          completionBlock:^(NSURL *assetURL, NSError *error) {
                              NSLog(@"assetURL %@", assetURL);
                          }];
于 2012-09-11T09:07:31.120 回答