Swift_通过相册选取图片,进行裁切有黑条
2018-07-05 本文已影响69人
Mccc_
问题描述
当使用相册里面的图片,打开了allowsEditing
属性,使用UIImagePickerControllerEditedImage
编辑过的图片时候,图片某一个或几个边上有黑边。
出现的条件:
- 这种情况只有在使用相册功能(拍照没影响)
- 在使用UIImagePickerControllerEditedImage,使用UIImagePickerControllerOriginalImage不受影响
- 图片宽度要小于高度的情况下
如图所示:
素材图片
原因
据说是iOS相册上的bug。
解决问题
还是继续打开allowsEditing,但是使用UIImagePickerControllerOriginalImage,并获取UIImagePickerControllerCropRect。 然后根据这个rect在originalImage上裁切出来一个editImage.
let originalImage : UIImage = info[UIImagePickerControllerOriginalImage] as! UIImage
let rect = info[UIImagePickerControllerCropRect] as! CGRect
let editedImage = originalImage.MCImageCrop(toRect: rect)
// 通过rect,裁切图片
func MCImageCrop(toRect:CGRect) -> UIImage {
let imageRef = self.cgImage?.cropping(to: toRect)
let image = UIImage.init(cgImage: imageRef!, scale: self.scale, orientation: self.imageOrientation)
return image
}