我使用UIImagePickerController
,其中allowsEditing
属性设置为YES
。
当用户完成挑选图像时,我想知道用户是否编辑了他选择的图像(例如,如果他缩放图像)。这个方法:
UIImage *editedImage = [info objectForKey:@"UIImagePickerControllerEditedImage"];
即使用户按原样离开图片,也始终返回一个对象。有没有办法检查用户是否编辑了图像?例如,我可以检查UIImagePickerControllerEditedImage
和UIImagePickerControllerOriginalImage
是否有所不同?
答案 0 :(得分:7)
在 didFinishPickingMediaWithInfo 中尝试此操作,因为我不确定:
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *editedimage = [info objectForKey:UIImagePickerControllerEditedImage];
if ([UIImagePNGRepresentation(image) isEqualToData:UIImagePNGRepresentation(editedimage)])
//not edited
else
//edited
答案 1 :(得分:0)
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *editedimage = [info objectForKey:UIImagePickerControllerEditedImage];
if(editedimage.length>0){
//then got the edited image
}
答案 2 :(得分:0)
你能不能得到并比较图像的CGSize?
BOOL sizeChanged = FALSE;
// get current size of image
CGSize originalSize = [image size];
//After the user hase made the action, get the new size
CGSize currentSize = [image size];
// if the dimensions have been editied the condition is true
if ( originalSize.width != currentSize.width ||
originalSize.height != currentSize.height
)
sizeChanged = TRUE;
else
sizeChanged = FALSE;
答案 3 :(得分:0)
检查出来:
这是ImagePicker委托的文档。如您所见,当用户选择和图像时,这称为:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
info - 是一个字典,其中包含有关已发生事件和已选择内容的数据。如果allowiting设置为YES,则info包含原始图像和编辑过的图像。检查我给你的链接
编辑信息键
那里有一堆常数可以为你提供所需的数据!
答案 4 :(得分:0)
我知道这是一个非常古老的问题,暂时没有任何活动,但这是谷歌搜索中出现的问题,据我所知,问题仍未得到满意答复。
无论如何,判断图像是否已编辑的方法是:
在didFinishPickingMediaWithInfo中:您可以检查CropRect的宽度和原始图像的宽度。如果CropRect.width == originalImage.width + 1,则表示尚未编辑。这是正确的原因是因为要编辑图像,用户必须进行缩放和缩放,这会缩放图像并更改CropRect的大小。除非缩放图像,否则简单地移动图像将无法正常工作,因为它会反弹。
NSValue *pickerCropRect = info[UIImagePickerControllerCropRect];
CGRect theCropRect = pickerCropRect.CGRectValue;
UIImage *originalImage = info[UIImagePickerControllerOriginalImage];
CGSize originalImageSize = originalImage.size;
if (theCropRect.size.width == originalImageSize.width+1) {
NSLog(@"Image was NOT edited.");
} else {
NSLog(@"Image was edited.");
}
据我所知,这适用于iOS 9中的6S和6+。我认为没有任何理由不应该在其他地方工作。