繁体   English   中英

UIImagePickerController 允许编辑不起作用

[英]UIImagePickerController AllowsEditing not working

我正在使用 UIImagePickerController 来允许用户拍照。 我想让他/她事后编辑它,但是,无论我做什么,我都一无所获。

这是我的代码(我使用的是 Xamarin):

UIImagePickerController imagePicker = new UIImagePickerController ();
                // set our source to the camera
                imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
                // set what media types
                //imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes (UIImagePickerControllerSourceType.Camera);
                // show the camera controls
                imagePicker.ModalPresentationStyle = UIModalPresentationStyle.CurrentContext;
                imagePicker.ShowsCameraControls = true;
                imagePicker.AllowsEditing = true;
                imagePicker.SetEditing (true,true);
                imagePicker.PreferredContentSize = new SizeF(900,600);
                imagePicker.CameraCaptureMode = UIImagePickerControllerCameraCaptureMode.Photo;
                imagePicker.Title="taste.eat. image";
                // attach the delegate
                imagePicker.Delegate = new ImagePickerDelegate();
                // show the picker
                NavigationController.PresentViewController(imagePicker, true,null);

我错过了什么吗?

编辑:

我已经按照教程操作,我正在使用矩形进入屏幕,但是如果我平移或缩放它,一旦我抬起手指,它就会回到中心。 是否可以从照片应用程序进入此屏幕?

来自照片应用程序的图像

当使用UIImagePickerController's delegate方法 - imagePickerController:didFinishPickingMediaWithInfo: ,我们使用

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

此代码将始终返回原始图像,即使编辑处于开启状态。

尝试使用

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

如果编辑打开,这将返回编辑后的图像。

希望这可以帮助。

AllowsEditing属性仅允许用户在选择图像时裁剪为正方形,并在选择视频时修剪视频。

任何其他功能都需要使用自定义 UI 和代码来实现。

请参阅此问题: iPhone SDK - 如何在启用允许编辑的情况下自定义 UIImagePickerController 中的裁剪矩形?

不幸的是,您在屏幕截图中显示的内容不是UIImagePickerController一部分

斯威夫特 3

我很难返回裁剪后的图像(我的最后一个简单的错误)。 而不是使用 UIImagePickerControllerOriginalImage,你需要 UIImagePickerControllerEditedImage。 见下文:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    // The info dictionary contains multiple representations of the image, and this uses the cropped image.
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage

    // Set yourImageView to display the selected image.
    yourImage.image = selectedImage

    // Dismiss the picker.
    dismiss(animated: true, completion: nil)
}

斯威夫特 4+

Swift 4 之后发生了一些变化。 UIImagePickerControllerEditedImage更改为UIImagePickerController.InfoKey.editedImage

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    let selectedImage = info[UIImagePickerController.InfoKey.editedImage] as! UIImage
    imageView.image = selectedImage
    dismiss(animated: true, completion: nil)        
}

无法仅通过更改allowsEditing = YES类的属性来enable filters 它只会显示裁剪工具。 根据您的屏幕截图,您似乎集成了一些有问题的开源库,如果不查看源代码,则很难修复中心裁剪错误。

最好发布一些有关您的实现的具体细节或切换到标准的开源库

它会像这样工作。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage

    userPhoto.image = selectedImage

    dismiss(animated: true, completion: nil)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM