0

当我从使用 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. 
    }
4

1 回答 1

0

根据 Wolvorin 的回答结束问题:

这是它应该工作的方式,因为您已将 UIImagePickerController 的编辑模式设置为 true,即使您不触摸图像,它也会自动缩放图像并裁剪它,它仅使用当前以正方形(白色边框)可见的图像。所以你总是得到分配的编辑图像属性或说不为空 – Wolvorin 1 月 30 日 8:32

于 2013-02-17T16:51:09.640 回答