您的位置:首页 > 移动开发

iPhone - UIImagePickerController -> save the image to app folder

2011-06-06 22:29 615 查看
http://stackoverflow.com/questions/4957972/iphone-uiimagepickercontroller-save-the-image-to-app-folder

4down votefavorite

Hello!

I have an iPhone application using a
UIImagePickerController
. As
sourceType
I have

UIImagePickerControllerSourceTypePhotoLibrary

UIImagePickerControllerSourceTypeCamera

UIImagePickerControllerSourceTypeSavedPhotosAlbum

so the user can make a photo or select one from the photo library from the photos or camera photos.

The image will be displayed in a UIImageView. The image should be saved if the user closes the app. So for text fields, I use
NSUserDefaults
. I know, it is not a good way to save the image inside the NSUSerDefaults with NSData, so I want to save / copy the image to a folder which is controlled by my application similar to the NSUserDefaults.

How can I do this? I want to save it, and then I can write the path to the file into my
NSUserDefaults
and read it on startup of the application.

Thank you in advance & Best Regards.

iphone objective-c uiimage uiimagepickercontroller
link|edit|flag
edited Feb 10 at 15:57



NR4TR
1,9851310

asked Feb 10 at 13:57



Tim
1,3281827

98% accept rate

3 Answers

activeoldestvotes

up vote3down voteaccepted
You can use the following code in
UIImagePickerControllerDelegate
delegate implementation

- (void) imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {

//obtaining saving path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"latest_photo.png"];

//extracting image from the picker and saving it
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.image"]){
UIImage *editedImage = [info objectForKey:UIImagePickerControllerEditedImage];
NSData *webData = UIImagePNGRepresentation(editedImage);
[webData writeToFile:imagePath atomically:YES];
}
}

That's all

link|edit|flag
edited Feb 10 at 14:12

answered Feb 10 at 14:02



NR4TR
1,9851310





up vote1down vote
Depending on the file format you want to save, you can use

[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];


or
[UIImageJPEGRepresentation(image) writeToFile:path atomically:YES];
.

link|edit|flag
answered Feb 10 at 14:02



Björn Marschollek
2,2752517

up vote0down vote
This is the code to save the UIImage into the document directory. You can use this code in didFinishPickingImage delegate method:

// Create paths to output images
NSString  *pngPath = [NSHomeDirectory();
stringByAppendingPathComponent:@"Documents/Test.png"];
NSString  *jpgPath = [NSHomeDirectory();
stringByAppendingPathComponent:@"Documents/Test.jpg"];

// Write a UIImage to JPEG with minimum compression (best quality)
// The value 'image' must be a UIImage object
// The value '1.0' represents image compression quality as value from 0.0 to 1.0
[UIImageJPEGRepresentation(image, 1.0) writeToFile:jpgPath atomically:YES];

// Write image to PNG
[UIImagePNGRepresentation(image) writeToFile:pngPath atomically:YES];

// Let's check to see if files were successfully written...

// Create file manager
NSError *error;
NSFileManager *fileMgr = [NSFileManager defaultManager];

// Point to Document directory
NSString *documentsDirectory = [NSHomeDirectory();
stringByAppendingPathComponent:@"Documents"];

// Write out the contents of home directory to console
NSLog(@"Documents directory: %@", [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error]);


EDIT

You can also use:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

to find the path to your application document directory, instead of NSHomeDierctory.

link|edit|flag
edited Mar 7 at 5:31



Chris Markle
349116

answered Feb 10 at 14:07



iHS
1,2051212

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐