Swift如何在UIImagepickercontroller中设置编辑器裁剪大小

5

为了我的iOS应用程序,我需要一个照片编辑器。因此,我设置:

imagePicker.allowsEditing = true

现在我想更改可编辑区域的大小。
这里是可编辑区域,但我需要可用图像的大小不同: image 我该如何更改此区域的大小以使用不同大小的可用图像区域?
这是我的PickerController代码。
@IBOutlet weak var preview: UIImageView!

let imagePicker = UIImagePickerController()

@IBAction func selectImage(_ sender: Any) {
    imagePicker.allowsEditing = true
    imagePicker.sourceType = .photoLibrary

    present(imagePicker, animated: true, completion: nil)
}

override func viewDidLoad() {
    super.viewDidLoad()

    imagePicker.delegate = self
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
        preview.contentMode = .scaleAspectFit
        preview.image = pickedImage
    }
    dismiss(animated: true, completion: nil)
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    dismiss(animated: true, completion: nil)
}

你不能改变它。 - rmaddy
您可以提供自己的cameraOverlayView,它可以显示任何大小的取景框。但是它仍然会以相同的方式拍照。您必须根据提供的cropRect和自定义overlayView逻辑手动裁剪它。 - Scriptable
4个回答

1

我试图从库或相机中保存编辑后的图片,但在网上没有找到任何信息,所以我尝试了这段代码,它有效!Swift 4.2

if let pickedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage{
            imageProfile.contentMode = .scaleAspectFit
            imageProfile.image = pickedImage
}

这行代码必须在函数内部。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){}

1
imageProfile是什么? - Landmaster
我相信那只是Christian的UIImageView变量的名称,他正在将图像设置为该变量。 - bkbeachlabs

0

使用UIImagePickerControllerEditedImage这段代码作为示例:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage{
        preview.contentMode = .scaleAspectFit
        preview.image = pickedImage
    }
    dismiss(animated: true, completion: nil)
}

0

通过UIImagePickerController是不可能实现的,您可以使用这个库来实现此功能(GKImagePicker)。


0

检查图像的高度和宽度:

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        guard let image = info[.editedImage] as? UIImage else {return}
        imageView.image = image
        dismiss(animated: true, completion: nil)
        print(image.size.height)
        print(image.size.width)
        print(image.size)
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接