【发布时间】: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