Swift_通过相册选取图片,进行裁切有黑条

问题描述

当使用相册里面的图片,打开了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
    }

你可能感兴趣的:(Swift_通过相册选取图片,进行裁切有黑条)