user1480179
user1480179

Reputation: 169

how to save UIImage in photos album using a custom name for the image

i am trying to save UIImage in the photos album of iPad with a custom name for each UIImage. I searched a lot and i realised that it is possible if i save them at the documents directory but not in the photos album. I was wondering if you could suggest a solution for that , please? Thank you in advance, best regards

Upvotes: 1

Views: 790

Answers (1)

Manuel Escrig
Manuel Escrig

Reputation: 2835

To save it with a custom name I would use the following code:

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

In order to save an screenshot in the device in a custom album name use the following code:

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

Hope this helps!

Upvotes: 1

Related Questions