2

我有一个我无法真正理解的问题。在大多数情况下,当我通过 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);

}

我从日志中得到的回报是

Output Image : (null)

4

3 回答 3

3

将允许编辑设置为UIImagePickerController.Like

UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.allowsEditing = YES;
于 2015-06-18T09:30:29.797 回答
1

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

于 2014-05-18T21:42:24.383 回答
0

您的代码不正确。构造“?:”应该是这样的:(布尔表达式)?“如果是则选择”:“如果否则选择”。在您的代码中不存在“如果是则选择”。我不明白编译器通过了这个,但可能是“nil”表示“如果是则选择”。我注意到 EditedImage 永远不会是 nil,所以你总是选择 nil。正确的代码应该是:

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

但请注意我从未见过

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

对不起,我的英语不好。祝你好运!

于 2013-12-02T21:28:44.167 回答