【问题标题】:Retrieve the UIImage taken with takePicture检索使用 takePicture 拍摄的 UIImage
【发布时间】:2024-01-12 03:07:01
【问题描述】:

目前,我可以在函数imagePickerController中检索用takePicture拍摄的图片,但是我想在这个函数之外使用它,当我尝试制作一个全局变量来使用这个UIImage时,我没有任何图片.
那么如何使用这个 UIImage 呢?

我的代码:

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

    screenshot = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

我在那里使用它:

NSData *imageData=[NSData dataWithData:UIImagePNGRepresentation(screenshot)];
NSURL *url = [NSURL URLWithString:@"http://myserver/test.php"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request addData:imageData withFileName:@"tmp.jpg" andContentType:@"image/jpeg" forKey:@"userfile"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startSynchronous];
NSLog(@"responseStatusCode %i",[request responseStatusCode]);
NSLog(@"responseStatusString %@",[request responseString]);

screenshot 是我的全局变量,我在服务器上收到一张空白图像。 提前致谢。

【问题讨论】:

  • 你保留 UIImage 吗?
  • 你能发布你的代码吗?

标签: iphone objective-c uiimage uiimagepickercontroller


【解决方案1】:

我假设您正在实现 UIImagePickerControllerDelegate?如果是这样,当调用 imagePickerController:didFinishPickingMediaWithInfo: 时,您可以使用以下方法从传入的字典中获取图像:

UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];

如果您想保留图像,请为您的 viewcontroller 类声明一个带有 retain 的属性,并设置它:

self.image = [info valueForKey:UIImagePickerControllerOriginalImage];

【讨论】:

  • 我该如何做你的第二个选择?
  • 这是基本的objective-c。在你的 .h UIImage *image 中声明一个成员变量。为该成员声明一个属性 @property(nonatomic,retain) UIImage *image。然后 @synthesize *image 在你的 .m 中。 macdevelopertips.com/objective-c/…
  • 您是否使用内置的图像编辑器?如果是这样,您需要使用不同的常量,即 UIImagePickerControllerEditedImage 我相信。保留图像后,您将如何处理它?