I'm saving a merged image to the iPhone photo library using:
UIImageWriteToSavedPhotosAlbum(viewImage, self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil);
And getting the callback using:
- (void) savedPhotoImage:(UIImage*)image didFinishSavingWithError:(NSError *)error contextInfo: (void *)contextInfo { NSLog(@"%@", [error localizedDescription]);
NSLog(@"info: %@", contextInfo);}
What I would like to get is the path for where the image has been saved, so I can add it to an array which will be used to call up a list of saved items elsewhere in the app.
When I load the image using the picker it displays the path info. However when I save a created image, I can't find where to pull the saved image path.
I have search about the web, but most examples stop at the callback with a nice message to say the image was saved successfully. I would just like to be able to know where it was saved.
I understand one method might be to start defining my own paths, but as the method does that for me, I was just hoping it could tell me where it saved to.
Swift Version will be
And "import ALAssetsLibrary" in your file.
Project-> Build Phases -> Link binary -> AssetsLibrary.framework
ALAssetsLibrary has been deprecated.
This is the way you should do it:
OlivariesF's answer is missing the key part of this question, retrieve the path:
Here's a code snippet that does everything:
Swift 4.1 version of OlivaresF's answer
My code is
in .h import Library and define type def of ALAssetsLibraryWriteImageCompletionBlock
if you don't know how to get
<AssetsLibrary/AssetsLibrary.h>
, please add existing framework (AssetsLibrary.framework)I finally found out the answer. Apparently the UIImage methods strip out metadata and so using UIImageWriteToSavedPhotosAlbum is no good.
However in ios4 Apple put in a new framework to handle the photo library called the ALAssetsLibrary.
First you need to right click on the Targets and in the build part, add the AlAsset Framework to your project with the little + icon in the bottom left.
Then add
#import "AssetsLibrary/AssetsLibrary.h";
to the header file of your class.Finally you can use the following code:
And that gets the path of the file you just saved.