这段代码让我感到烦恼,因为我从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.
}
答案 0 :(得分:0)
这是它应该工作的方式,因为你已经将UIImagePickerController的编辑模式设置为true它会自动缩放图像并裁剪它,即使你不触摸图像它只使用当前在正方形中可见的图像(白色)接壤)。所以你总是得到编辑过的图像属性,或者说不是null - Wolvorin Jan 30 at 8:32