我遇到了一些我无法理解的问题。当我在大多数情况下通过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)
答案 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 ))))
抱歉我的英语不好。 祝好运!