UIImagePickerController为某些图像返回Null

时间:2013-08-31 17:26:25

标签: iphone ios objective-c xcode uiimagepickercontroller

我遇到了一些我无法理解的问题。当我在大多数情况下通过UIImagePickerController获取图像时,我返回了一个UIImage。这一行

UIImage* outputImage = [info objectForKey:UIImagePickerControllerEditedImage]? : [info objectForKey:UIImagePickerControllerOriginalImage];

但偶尔也会给我一张Null图片。而我似乎无法弄清楚原因。有没有人遇到类似的东西?

我似乎发现它更频繁地从网络保存的图像中返回这些空图像。但我不能说这完全是那个。

谢谢!

完整的方法。当用户从选择器中选择图像时会发生这种情况。

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


    UIImage* outputImage = [info objectForKey:UIImagePickerControllerEditedImage]? : [info objectForKey:UIImagePickerControllerOriginalImage];

    NSLog(@"Output Image : %@", outputImage);

}

我从Log获得的回报是

Output Image : (null)

3 个答案:

答案 0 :(得分:3)

将允许编辑设为UIImagePickerController。赞

UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.allowsEditing = YES;

答案 1 :(得分:1)

我知道这已经很晚了,但我最近遇到了类似的问题,返回的值为null。如果您实际上没有编辑图像,可以安全地说使用:UIImage* outputImage = info[UIImagePickerControllerOriginalImage];您的代码存在问题,我相信另一个人试图说的是三元运算符在错误的位置。使用三元运算符的正确方法是(condition) ? (if_true) : (if_false)。 祝所有人好运,如果他们遇到类似的问题。

答案 2 :(得分:0)

您的代码不正确。施工“?:”应该是这样的:(布尔表达)? “选择是否”:“如果否,则选择”。在您的代码中不存在“选择是否”。我不明白,当编译器通过它时,可能会将“nil”设置为“如果是,则选择”。我注意到EditedImage永远不会为零,所以你总是选择nil。正确的代码应该是:

UIImage* outputImage = [info objectForKey:UIImagePickerControllerEditedImage] ? [info objectForKey:UIImagePickerControllerEditedImage] : [info objectForKey:UIImagePickerControllerOriginalImage];

但请注意我从未见过

[info objectForKey:UIImagePickerControllerEditedImage] == nil ))))

抱歉我的英语不好。 祝好运!