关于swift5.0 图片裁剪问题

1,205 阅读2分钟
  • 扯淡
    差不多有一年没有写iOS代码了,iOS迎来了诸多变化,首先swift升级到了swift5.0、iOS13系统发布、iPad OS与iOS不再是同一个系统(但是差别不大)和深色模式等等。这一年中接触了一些新东西,如微信小程序、flutter、dart、HTML、uni-app等。大家感兴趣的可以了解了解,flutter越来越火了,现在国内也有不少人在用uni-app进行跨端开发;
  • 问题
    最近在做一个Swift项目时遇到这样一个问题,项目需要用户上传头像,头像选择时没有什么问题,但用户头像基本都是圆形或是带有圆角的正方形。 那么问题来了,我们中相册中得到的图片是原图或者是压缩后的图,图的本身比例没有变化,在图片填充的时候会发现图片变形,或是上传头像到服务器时头像过大给服务器代理不必要的开销。就想在网上找一个别人写好的图片裁剪工具,但始终会报错,主要是swift5.0的改变带来的。所以我自己造一个,但是时间好像来不及,最后决定把现在项目中用的别人的这份裁剪代码改改。最后功夫不负有心人,附上代码地址

使用

extension ViewController : UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        picker.dismiss(animated: false, completion: nil)
        let image = info[.originalImage] as! UIImage
        
        let cropperImage = RImageCropperViewController.init(originalImage: image, cropFrame: CGRect.init(x: (kScreenWidth - 300)/2, y: (kScreenHeight - 300)/2, width: 300, height: 300), limitScaleRatio: 30)
        cropperImage.delegate = self
        navigationController?.pushViewController(cropperImage, animated: true)
    }
    
}

代码实现都比较简单,可以直接把文件RImageCropperViewController.swiftRDevice.swift复制到你的项目中就可以使用了。 至于RImageCropperViewController.swift 中的实现感兴趣的朋友可以看看,先就写到这里,后面在完善