iOS、Swift、UIImagePicker 允许编辑裁剪工具删除透明度。有修复吗?

Luk*_*yer 4 cocoa-touch image uiimagepickercontroller ios swift

当我从 UIImagePicker 获取具有透明背景的 PNG 图像时,它会插入具有透明背景的图像,如下所示:

在此输入图像描述

当我设置时:

imagePicker.allowsEditing = true
Run Code Online (Sandbox Code Playgroud)

它允许我在 UIImagePicker 提供的视图中按预期进行裁剪

但是当我按“选择”时,它会返回黑色图像而不是透明背景,如下所示:

在此输入图像描述

两个结果之间唯一的变化是设置

imagePicker.allowsEditing = true
Run Code Online (Sandbox Code Playgroud)

并在应用程序中裁剪图像。

有没有办法保持透明度或至少在裁剪时将黑色更改为白色?

我在互联网上搜索过,但没有看到提及这一点。

代码:

 func showImagePicker() {
    imagePicker.allowsEditing = true
    imagePicker.sourceType = .photoLibrary

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

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage {
        compImageView?.contentMode = .scaleAspectFit
        compImageView?.backgroundColor = UIColor.clear
        compImageView?.image = pickedImage

    }

    dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

Has*_*tab 5

默认情况下,UIImagePickerController 会删除编辑图像中的 Alpha 通道。为了获得透明度,您必须自己编辑图像。像这样实现委托方法:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {


        if let cropRect = info[UIImagePickerControllerCropRect] as? CGRect {
            if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
                let imageRef: CGImage = image.cgImage!.cropping(to: cropRect)!

                let image1: UIImage = UIImage(cgImage: imageRef, scale: image.scale, orientation: image.imageOrientation)

                imageView.image = image1
                picker.dismiss(animated: true, completion: nil)

            }

        }

    }
Run Code Online (Sandbox Code Playgroud)