当我从使用 UIImagePickerController 的苹果文档中获取此代码时,此代码困扰着我。您检查图像是否使用“if (editedImage)”编辑的部分总是正确的。This is so (as according to people on this site) as UIImagePickerControllerEditedImage will always have data even if image was not edited, when the picker is set to editing YES. 问题是,如果 (UIImagePickerControllerEditedImage 和 UIImagePickerControllerOriginalImage) 都不是 nil,我们怎么知道哪个被选中?
我在这里和谷歌上查看了许多教程和许多其他问题。但它又回到了同样的事实,即使您没有编辑它,代码的逻辑也会让您 100% 获得编辑后的图像。
我测试了此代码和其他问题中给出的其他代码,但问题始终保持不变我无法判断哪个是用户想要使用的代码。如果字典有一个 BOOL 值要知道,那真的很有帮助。
在测试我的应用程序时,如果我从相册中选择一张照片或拍摄一张新照片,我将被带到编辑屏幕,在那里我可以取消或接受并调整图像大小/裁剪图像。即使我没有触摸图像,按下接受也会一直让我编辑图像。
这是图像选择器的苹果文档 API 中的代码。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
UIImage *originalImage, *editedImage, *imageToSave;
// Handle a still image capture
if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0)
== kCFCompareEqualTo) {
editedImage = (UIImage *) [info objectForKey:
UIImagePickerControllerEditedImage];
originalImage = (UIImage *) [info objectForKey:
UIImagePickerControllerOriginalImage];
if (editedImage) {
imageToSave = editedImage;
} else {
imageToSave = originalImage;
}
}
// work with image or save and exit modal.
}