如何使用图像的自定义名称在照片相册中保存UIImage

时间:2014-01-23 07:40:22

标签: ipad uiimage

我试图在iPad的相册中保存UIImage,每个UIImage都有一个自定义名称。我搜索了很多,我意识到如果我将它们保存在文档目录中但不能保存在相册中是可能的。我想知道你是否可以为此提出解决方案,好吗?提前谢谢你,最好的问候

1 个答案:

答案 0 :(得分:1)

要使用自定义名称保存,我将使用以下代码:

// I do this in the didFinishPickingImage:(UIImage *)img method

// Build NSData in memory from the btnImage...
NSData* imageData = UIImageJPEGRepresentation(img, 1.0);

// Save to the default Apple (Camera Roll) folder.   
[imageData writeToFile:@"/private/var/mobile/Media/DCIM/100APPLE/customImageFilename.jpg" atomically:NO];

要在设备中以自定义相册名称保存屏幕截图,请使用以下代码:

- (void)createScreenshotAndSaveInACustomAlbum {
    DebugLog(@"");

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
        UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
    } else {
        UIGraphicsBeginImageContext(self.view.bounds.size);
    }

    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library addAssetsGroupAlbumWithName:@"My Photo Album" resultBlock:^(ALAssetsGroup *group) {

        // Checks if group previously created
        if(group == nil){

            // Enumerate albums
            [library enumerateGroupsWithTypes:ALAssetsGroupAlbum
                               usingBlock:^(ALAssetsGroup *g, BOOL *stop)
             {
                 // If the album is equal to our album
                 if ([[g valueForProperty:ALAssetsGroupPropertyName] isEqualToString:@"My Photo Album"]) {

                     // Save image
                     [library writeImageDataToSavedPhotosAlbum:UIImagePNGRepresentation(image) metadata:nil
                                           completionBlock:^(NSURL *assetURL, NSError *error) {

                                               // Then get the image asseturl
                                               [library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
                                                        // Put it into our album
                                                        [g addAsset:asset];
                                                    } failureBlock:^(NSError *error) {

                                                    }];
                                           }];

                 }
             } failureBlock:^(NSError *error){ }];
        } else {
            // Save image directly to library
            [library writeImageDataToSavedPhotosAlbum:UIImagePNGRepresentation(image) metadata:nil
                                  completionBlock:^(NSURL *assetURL, NSError *error) {

                                      [library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
                                               [group addAsset:asset];

                                           } failureBlock:^(NSError *error) { }];
                                  }];
        }

    } failureBlock:^(NSError *error) { }];
}

希望这有帮助!