首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AVfoundation将照片保存到自定义相册iOS 8

AVfoundation将照片保存到自定义相册iOS 8
EN

Stack Overflow用户
提问于 2015-04-18 14:53:53
回答 1查看 2.3K关注 0票数 1

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

代码语言:javascript
运行
复制
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

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

因此,以下内容不起作用:

代码语言:javascript
运行
复制
[self.library saveImage:image toAlbum:@"CustomAlbum" withCompletionBlock:^(NSError *error) {
        if (error!=nil) {
            NSLog(@"Big error: %@", [error description]);
        }
    }];

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

非常感谢。

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

代码语言:javascript
运行
复制
-(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];

                      }];
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-18 15:42:24

我测试了一些用于创建相册的旧代码,这仍然有效。我已经为您做了一些帮助方法,所以您不必将代码块拼凑在一起。希望这能帮助你了解不同的做法。

代码语言:javascript
运行
复制
#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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29718902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档