如何保存使用Camera捕获的图像并保存在另一个ViewController中?

时间:2018-06-01 06:06:05

标签: ios objective-c

如何保存使用Camera捕获的图像并保存在另一个ViewController中?

我正在制作照片库应用程序。但我不知道如何保存捕获的图像并在另一个视图控制器的集合视图中显示它。目前我正在使用UIImagePickerController访问iphone相机和库。任何人都可以帮我这样做。

这是我的代码。

提前致谢

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController



- (IBAction)takePhoto:(UIButton *)sender {

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;

    [self presentViewController:picker animated:YES completion:NULL];

}

- (IBAction)selectPhoto:(UIButton *)sender {

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    [self presentViewController:picker animated:YES completion:NULL];


}

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

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.imageView.image = chosenImage;

    [picker dismissViewControllerAnimated:YES completion:NULL];

}


- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    [picker dismissViewControllerAnimated:YES completion:NULL];

}




- (void)viewDidLoad {
    [super viewDidLoad];
    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

        UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                              message:@"Device has no camera"
                                                             delegate:nil
                                                    cancelButtonTitle:@"OK"
                                                    otherButtonTitles: nil];

        [myAlertView show];

    }
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

2 个答案:

答案 0 :(得分:0)

试试这个

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  // Access the uncropped image from info dictionary
  UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

  // Save image
  UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

  [picker release];
}

答案 1 :(得分:0)

您可以通过添加NSNotificationcenter来实现它。

A类 - 从相机中选择图像的位置

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{
     UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
     self.imageView.image = chosenImage;
     [picker dismissViewControllerAnimated:YES completion:NULL];
    [[NSNotificationCenter defaultCenter] postNotificationName: @"GotNewImage" object: chosenImage];
}

B类 - 您希望在选择后传递图像并在集合视图上显示的位置。在Viewdidload中为此类添加Nsnotificationcenter

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(GotNewImage:) name:@"GotNewImage" object:nil];

//在B级上获取图像

-(void)GotNewImage:(NSNotification*)notification
 {
     UIImage * newImage = (UIImage*) notification.object;
     //Now do whatever you want to do with your image...
     //Add in collection view and reload the collection view
 }