UIImagePickerControllerEditedImage始终存在

时间:2013-01-30 07:04:23

标签: ios5 uiimagepickercontroller

这段代码让我感到烦恼,因为我从Apple文档中获取了使用UIImagePickerController的信息。使用“if(editedImage)”检查图像是否已编辑的部分始终为true。这是如此(根据本网站上的人的说法),因为当选择器设置为编辑YES时,即使未编辑图像,UIImagePickerControllerEditedImage也将始终具有数据。问题是如果两者(UIImagePickerControllerEditedImage和UIImagePickerControllerOriginalImage)都变成非零,我们怎么知道哪个被选中?

我在这里和谷歌看过许多教程和许多其他问题。但它回到了同样的事实,即使你没有编辑它,代码的逻辑也会使你编辑的图像100%。

我测试了这个代码以及其他问题中提供的其他代码,但问题始终保持不变,我无法分辨出哪个是用户想要使用的代码。如果字典有一个BOOL值可以知道它真的会有帮助。

在测试我的应用程序时,如果我从相册中选择一张照片或拍摄一张新照片,我会进入编辑屏幕,我可以取消或接受并调整大小/裁剪图像。即使我没有触摸图像,按下接受也会一直得到编辑过的图像。

以下是来自图像选择器的Apple文档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. 
    }

1 个答案:

答案 0 :(得分:0)

根据Wolvorin的回答结束问题:

这是它应该工作的方式,因为你已经将UIImagePickerController的编辑模式设置为true它会自动缩放图像并裁剪它,即使你不触摸图像它只使用当前在正方形中可见的图像(白色)接壤)。所以你总是得到编辑过的图像属性,或者说不是null - Wolvorin Jan 30 at 8:32