2013-07-16 164 views
0

我想保存我在应用程序中拍摄的照片。我想保存图片,以便即使关闭应用程序,图片仍然保存。这是我的代码,我已经写直到现在如何保存拍摄的照片

-(IBAction)TakePhoto { 
    picker = [[UIImagePickerController alloc]init]; 
    picker.delegate = self; 
    [picker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    [self presentViewController:picker animated:YES completion:nil]; 
} 

- (IBAction)ChooseExisting { 
    picker2 = [[UIImagePickerController alloc]init]; 
    picker2.delegate = self; 
    [picker2 setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
    [self presentViewController:picker2 animated:YES completion:nil]; 
} 

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [imageview setImage:image]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 

} 
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { 
    [self dismissViewControllerAnimated:YES completion:NULL]; 
} 

我应该如何使应用程序保存我拿了并显示图片。

+0

您希望将其保存在用户的相机胶卷中加载图像?或者在你自己的应用程序?前者只是'UIImageWriteToSavedPhotosAlbum' C函数。 – Can

+0

在我自己的应用程序内 – Devnews

回答

1
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString * basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; 

UIImage * imageToSave = [UIImage imageNamed:@"Icon.png"]; 
NSData * binaryImageData = UIImagePNGRepresentation(imageToSave); 

[binaryImageData writeToFile:[basePath stringByAppendingPathComponent:@"myfile.png"] atomically:YES]; 

Copied from here

您可能需要编辑与imageToSave变量的行并将其更改为在UIImage的变量,从相机中得到。

1

试试这个在您的方法:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [imageview setImage:image]; 

    //Save Your Image ====== 
    UIImage *yourImage = imageView.image;//imageView.image; 
    NSString *docDirPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    NSString *filePath = [docDirPath stringByAppendingPathComponent:@"myImageFile.png"]; 
    [UIImagePNGRepresentation(yourImage) writeToFile:filePath atomically:YES]; 



    [self dismissViewControllerAnimated:YES completion:nil]; 

} 

而且在同一类的viewDidLoad中这样写:

//For Get your Image from Documents Dir 
    NSString *docDirPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    NSString *filePath = [docDirPath stringByAppendingPathComponent:@"myImageFile.png"]; 

    if([[NSFileManager defaultManager] fileExistsAtPath:filePath]) 
    { 
//if file already saved then set it on your imageView 
     UIImage *getYourImage = [UIImage imageWithContentsOfFile:filePath]; 
     imageView.image = getYourImage; 
    } 
    else 
    { 
//otherwise set a Dummy Image on your ImageView or nil 
     imageView.image = nil; //[UIImage imageNamed:@"dummyImage.png"]; 

    } 
1

//调用此方法从相机捕捉画面

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    //Get image 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    //Display in ImageView object (if you want to display it 
    [imageView setImage:image]; 
     [ButtonName setImage:image forState:UIControlStateNormal]; 
    //Take image picker off the screen (required) 
    [self dismissModalViewControllerAnimated:YES]; 
} 

//保存图像:

- (NSString *)saveImage:(UIImage*)image:(NSString*)imageName 
{  
    NSData *imageData = UIImagePNGRepresentation(image); //convert image into .png format.  
    NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it 
    NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]]; //add our image to the path 
    [fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; //finally save the path (image) 
    NSLog(@"FULL PATH %@",fullPath); 
    NSLog(@"image saved"); 
    return fullPath; 
} 

//删除图像

- (void)removeImage:(NSString*)fileName 
{ 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", fileName]]; 

    [fileManager removeItemAtPath: fullPath error:NULL]; 

    NSLog(@"image removed");  
} 

//从画廊

- (UIImage*)loadImage:(NSString*)imageName 
{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", imageName]]; 

    NSLog(@"Loading Image Path : %@",fullPath); 

    return [UIImage imageWithContentsOfFile:fullPath]; 

}