【问题标题】:How to create a new ALAsset from downloaded image如何从下载的图像创建新的 ALAsset
【发布时间】:2012-04-14 21:33:30
【问题描述】:

我正在尝试开发一个应用程序,该应用程序将下载图像(从摄影网站)并为每个图像创建一个 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)

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

【问题讨论】:

    标签: objective-c ios ipad alassetslibrary


    【解决方案1】:

    你不能像那样创建一个新的 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 实例。

    干杯。

    亨德里克

    【讨论】:

    • 谢谢,我就是这样做的。
    【解决方案2】:

    使用以下代码更容易:

        //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);
                              }];
    

    【讨论】:

      【解决方案3】:

      您可以使用UIImageWriteToSavedPhotosAlbum 函数将UIImage 保存到相机的翻转中。

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

      它被描述为here

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

      【讨论】:

        猜你喜欢
        • 2017-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 2019-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多