【问题标题】:Why are images from UIImagePickerController sometimes cropped incorrectly?为什么 UIImagePickerController 中的图像有时会被错误地裁剪?
【发布时间】:2017-01-11 14:07:44
【问题描述】:

有时从带有UIImagePickerController 的相册中挑选的图像的裁剪方式与用户想要的裁剪方式不同。这发生在大约。 50 张图片上传中的 1 张。

发生这种情况时,图像总是从左上角裁剪到图像的一部分。这是一个示例图像,其中 (1) 在红色矩形中显示用户应该选择裁剪的内容以及 (2) 最终在服务器上的图像。

(1) 中的选择是假设性的,因为不知道用户如何准确定位裁剪,并且还无法重现这种不正确的裁剪。仅在实时应用程序中观察到。有的用户尝试多次上传同一张图片,总是剪裁错误,最终投诉,所以并不是用户故意这样剪裁图片。

一些用户尝试上传不同的图片,但所有图片都被错误地裁剪。

这是代码(经过简化,但图像没有更多变化):

class ImagePicker {

    private let imagePicker = UIImagePickerController()

    func showPicker() {
        imagePicker.sourceType = .PhotoLibrary
        imagePicker.mediaTypes = [kUTTypeImage as String]
        imagePicker.allowsEditing = true
        imagePicker.delegate = delegate
        imagePicker.modalPresentationStyle = .OverFullScreen
        parentViewController.presentViewController(imagePicker, animated: true, completion: nil)
    }

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

        if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
            uploadImage(image)
        }
    
        picker.dismissViewControllerAnimated(true, completion: nil)
    }

    func uploadImage(image: UIImage) {

        let imageData = UIImageJPEGRepresentation(image, 0.75)!
        let imageFile = PFFile(name: "image.png", data: imageData)
        
        // Upload to Open Source Parse Server which stores the image in an Amazon S3 bucket.
        let imageObject = PFObject(className: "ImageClass")
        imageObject(imageFile, forKey: "imageFile")
        imageObject.saveInBackground()
    }
}

有人知道为什么会这样吗?

更新:

我能够在 iPad 上重现该问题,我将在此处更新结果。

更新:

该问题仅出现在 iPad 上,因此可能与裁剪图像时 UIImagePickerViewController 中的错误有关。

【问题讨论】:

  • 面临同样的问题。你解决了吗?如果您能帮助解决这个问题,我们将不胜感激。
  • @AjayGabani 这不再发生了,但我们现在向用户展示了一个自定义图像裁剪器,因为他们从UIImagePickerController 中挑选了一张图像。因此,我们在CGGraphicsContext 中绘制和裁剪图像还有一个处理步骤。据我记得,这解决了这个问题。如果您可以重现该问题,请尝试逐步调试:通过在委托方法中放置断点来检查拾取的图像,检查图像数据等。在流程中的某个地方它会变得混乱。
  • 我在网上搜索了这个,但没有找到与此相关的内容。现在我也必须使用自定义裁剪类。
  • @AjayGabani ,你解决了这个问题吗?我也遇到过。
  • @DmitriyGreh 我使用自定义裁剪器裁剪图像。这将更容易,耗时更少。

标签: swift parse-platform uiimage uiimagepickercontroller uiimagejpegrepresentation


【解决方案1】:

我有同样的问题。就我而言,我通过更改 imageView 的内容模式来解决它。它被设置为“scaleAspectFill”。我刚刚删除了它,我的图像被正确地裁剪了。

【讨论】:

  • 您的意思是一个UIImageView,您可以在其中显示选取的图像?在我的结果图像被错误裁剪的情况下,这不是问题。而且似乎只在 iPad 上,所以我认为这是一个 iOS 错误。 iOS 11 可能已经解决了这个问题?
猜你喜欢
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 2021-01-14
  • 1970-01-01
相关资源
最近更新 更多