-1

UIImagePickerController から別の ViewController.xib に画像を表示するには?

「ViewController1」があり、ここに次のコードがあります。

- (IBAction)goCamera:(id)sender {


    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    [picker setSourceType:UIImagePickerControllerSourceTypeCamera];
    [self presentModalViewController:picker animated:YES];
}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];
    UIImageView *theimageView = [[UIImageView alloc]init];
    theimageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

}

「ViewController2」に移動して、そこに撮影した写真を表示するにはどうすればよいですか? ViewController1 を使用して写真を撮ります。この撮影した写真を、UIImageView を取得した ViewController2 に表示したいと思います。どうもありがとう

4

1 に答える 1

2

最善の方法は、画像を受け取ったらすぐにアプリのフォルダー内に画像を保存することです。

これはメモリ管理に役立つため、重要です。

アプリ内で画像データを渡す代わりに、画像データを手放すことができます。

次のようなコードを使用します。

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

    UIImage *originalImage, *editedImage, *imageToSave;
    editedImage = (UIImage *) [info objectForKey:
                               UIImagePickerControllerEditedImage];
    originalImage = (UIImage *) [info objectForKey:
                                 UIImagePickerControllerOriginalImage];
    imageToSave = (editedImage!=nil ? editedImage : originalImage);


    // Check if the image was captured from the camera
    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
        // Save the image to the camera roll
        UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
    }

    NSString *docspath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *filepathJPG = [docspath stringByAppendingPathComponent:@"imagefile.jpg"];

    NSData *data = UIImageJPEGRepresentation(imageToSave, 0.8);
    BOOL result = [data writeToFile:filepathJPG atomically:YES];
    NSLog(@"Saved to %@? %@", filepathJPG, (result? @"YES": @"NO") );

    [picker dismissModalViewControllerAnimated:YES];
}

次に、他のView Controllerで、画像をロードすると予想される場所(viewDidLoad、viewWillAppear、またはどこでも)に次を配置します。

NSString *docspath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filepathJPG = [docspath stringByAppendingPathComponent:@"imagefile.jpg"];

UIImage *img = [UIImage imageWithContentsOfFile: filepathJPG];
if (img != nil) {
    // assign the image to the imageview, 
    myImageView.image = img;

    // Optionally adjust the size
    BOOL adjustToSmallSize = YES;
    CGRect smallSize = (CGRect){0,0,100,100};
    if (adjustToSmallSize) {
        myImageView.bounds = smallSize;
    }

}
else {
    NSLog(@"Image hasn't been created");
}

それが役立つことを願っています

于 2012-12-12T20:56:27.693 に答える