【问题标题】:AVfoundation save photo to custom album iOS 8AVfoundation 将照片保存到自定义相册 iOS 8
【发布时间】:2015-04-18 14:53:53
【问题描述】:

我用AVfoundation 框架(目标C)创建了一个自定义相机,我正在使用

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

但它只是保存到默认相册。我想将我的照片保存在自定义相册中,但 ALAssetsLibrary 或 ALAssetsLibrary+CustomPhotoAlbum.h 不再与 iOS8 一起使用。我已经尝试了所有方法,但在 iOS8 中没有任何效果。

所以以下方法不起作用:

[self.library saveImage:image toAlbum:@"CustomAlbum" withCompletionBlock:^(NSError *error) {
        if (error!=nil) {
            NSLog(@"Big error: %@", [error description]);
        }
    }];

你能帮我把照片保存到iOS8的自定义相册吗?

非常感谢。

以下方法在 ALAssetsLibrary+CustomPhotoAlbum 中不起作用,在 iOS8 类中:

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
{
    //write the image data to the assets library (camera roll)
    [self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation 
                        completionBlock:^(NSURL* assetURL, NSError* error) {

                          //error handling
                          if (error!=nil) {
                              completionBlock(error);
                              return;
                          }

                          //add the asset to the custom photo album
                          [self addAssetURL: assetURL 
                                    toAlbum:albumName 
                        withCompletionBlock:completionBlock];

                      }];
}

【问题讨论】:

    标签: ios xcode ios8 avfoundation


    【解决方案1】:

    我测试了一些用于创建相册的旧代码,但它仍然有效。我为您制作了一些辅助方法,因此您不必拼凑代码块。希望这有助于了解您的不同做法。

    #import "AppDelegate.h"
    #import <AssetsLibrary/AssetsLibrary.h>
    
    @interface AppDelegate()
    @end
    
    @implementation AppDelegate
    
    static NSString * const customPhotoAlbumName = @"CustomAlbumv2";
    
    - (void) setupPhotoAlbumNamed: (NSString*) photoAlbumName withCompletionHandler:(void(^)(ALAssetsLibrary*, ALAssetsGroup*))completion
    {
        ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
        __weak ALAssetsLibrary *weakAssetsLibrary = assetsLibrary;
        [assetsLibrary addAssetsGroupAlbumWithName:photoAlbumName resultBlock:^(ALAssetsGroup *group)
         {
             NSLog(@"%@ Album result: %@", self, (group.editable ? @"success" : @"already existed"));
             if (!group)
             {
                 [weakAssetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *g, BOOL *stop) {
                     if ([[g valueForProperty:ALAssetsGroupPropertyName] isEqualToString:customPhotoAlbumName])
                     {
                         completion(weakAssetsLibrary, g);
                     }
                 } failureBlock:^(NSError *error) {
                     NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
                     completion(weakAssetsLibrary, nil);
                 }];
             }
             else
             {
                 completion(weakAssetsLibrary, group);
             }
        } failureBlock:^(NSError *error)
        {
            NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
            completion(weakAssetsLibrary, nil);
        }];
    }
    
    - (void) addImage: (UIImage*) image toAssetsLibrary: (ALAssetsLibrary*) assetsLibrary withGroup: (ALAssetsGroup*) group
    {
        [assetsLibrary writeImageDataToSavedPhotosAlbum:UIImagePNGRepresentation(image) metadata:nil
                                        completionBlock:
         ^(NSURL *assetURL, NSError *error)
         {
             if (error)
             {
                 NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
             }
             else
             {
                 [assetsLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset)
                  {
                      [group addAsset:asset];
                      NSLog(@"%@ Image was succesfully added!", self);
                  } failureBlock:^(NSError *error) {
                      NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
                  }];
             }
         }];
    }
    
    #pragma mark - UIApplicationDelegate
    
    - (BOOL) application: (UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
    {
        UIImage *imageToAddToAlbum = [UIImage imageNamed:@"test"];
        [self setupPhotoAlbumNamed:customPhotoAlbumName withCompletionHandler:
         ^(ALAssetsLibrary *assetsLibrary, ALAssetsGroup *group) {
            if (group)
            {
                [self addImage:imageToAddToAlbum toAssetsLibrary:assetsLibrary withGroup:group];
            }
        }];
        return YES;
    }
    @end
    

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      相关资源
      最近更新 更多