Iphone 如何从UIImagePicker获取图像副本

Iphone 如何从UIImagePicker获取图像副本,iphone,xcode,delegates,uiimageview,uiimagepickercontroller,Iphone,Xcode,Delegates,Uiimageview,Uiimagepickercontroller,我有一个非常简单的应用程序,用户可以选择一个UIImageView,然后按下按钮用相机拍照。然后返回图像并显示在UIImageView中 但是,由于UIImageView共享同一个代理,当其中一个UIImageView中已经有一个图像,并且我要在另一个视图中拍照时,以前的UIImageView将被替换为空内容(即没有图像)。我猜这是因为他们共享同一个代表。是否有任何方法可以从本质上复制图像,而不是引用其代理版本 下面是一些示例代码: - (void)imagePickerControll

我有一个非常简单的应用程序,用户可以选择一个
UIImageView
,然后按下按钮用相机拍照。然后返回图像并显示在
UIImageView

但是,由于
UIImageView
共享同一个代理,当其中一个
UIImageView
中已经有一个图像,并且我要在另一个视图中拍照时,以前的
UIImageView
将被替换为空内容(即没有图像)。我猜这是因为他们共享同一个代表。是否有任何方法可以从本质上复制图像,而不是引用其代理版本

下面是一些示例代码:

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
[picker.parentViewController dismissModalViewControllerAnimated:YES];

if (topView == YES)
{
    NSLog(@"topView = %i", topView);
    imageView.image = image;
}
else {
    NSLog(@"topView = %i", topView);
    imageView2.image = image;
}
}

谢谢

编辑:以下是IBAction在按下按钮时调用的代码

- (IBAction) pushPick {
    topView = YES;
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentModalViewController:picker animated:YES];
    [picker release];
}
- (IBAction) pushPick2 {
    topView = NO;
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentModalViewController:picker animated:YES];
    [picker release];
}
使用

但请记住,您需要在dealloc使用时释放对象

但请记住,您需要在dealloc上释放对象,如下所示:

UIImage * newImage = [UIImage imageWithCGImage:[image CGImage]];
大概是这样的:

UIImage * newImage = [UIImage imageWithCGImage:[image CGImage]];

UIImage不符合NSCopying,因此我不会向其发送“复制”消息。UIImage不符合NSCopying,因此我不会向其发送“复制”消息。谢谢,我确信这是正确的,但我的应用程序仍有问题。我有两个启动imagepicker的按钮,每个UIImageView有一个按钮。我发现,如果我按第一个按钮并选择一个图像,然后按第二个按钮并选择一个图像,一切都很好,但随后按另一个按钮会将该图像指定给UIView,但会清除另一个UIView。有什么想法吗?很难说,我会尝试放置
NSLog(@“topView=%I”,topView)围绕依赖于该变量的代码区域。似乎正在生成正确的结果。也许有更好的方法将多个UIImageView绑定到UIImagePicker?顺便说一句,如果我选择了不同的UIImagePickerSourceType(例如UIImagePickerControllerSourceTypePhotoLibrary),我已经编辑了上面的信息,那么一切似乎都正常。我没有对这个方法做太多更改,我认为只是日志语句发生了更改。谢谢相机选择器可能使用共享UIImage来存储捕获的图像。尝试使用
imageView.image=[UIImage-imageWithCGImage:[image-CGImage]]在这两种情况下都是如此。谢谢,我确信这是正确的,但我的应用程序仍然有问题。我有两个启动imagepicker的按钮,每个UIImageView有一个按钮。我发现,如果我按第一个按钮并选择一个图像,然后按第二个按钮并选择一个图像,一切都很好,但随后按另一个按钮会将该图像指定给UIView,但会清除另一个UIView。有什么想法吗?很难说,我会尝试放置
NSLog(@“topView=%I”,topView)围绕依赖于该变量的代码区域。似乎正在生成正确的结果。也许有更好的方法将多个UIImageView绑定到UIImagePicker?顺便说一句,如果我选择了不同的UIImagePickerSourceType(例如UIImagePickerControllerSourceTypePhotoLibrary),我已经编辑了上面的信息,那么一切似乎都正常。我没有对这个方法做太多更改,我认为只是日志语句发生了更改。谢谢相机选择器可能使用共享UIImage来存储捕获的图像。尝试使用
imageView.image=[UIImage-imageWithCGImage:[image-CGImage]]