Swift 中的自定义裁剪图像

Custom crop image in Swift

我已经创建了一个用户可以拍照的应用程序,我想添加一个自定义裁剪功能,其工作方式类似于 Snapchats 或 PhotoShops 魔术棒工具。我从 Apple Developer Website 找到了下面的代码,它允许我拍摄捕获的图像并将其裁剪成 CGRect.

func cropImage(_ inputImage: UIImage, toRect cropRect: CGRect, viewWidth: CGFloat, viewHeight: CGFloat) -> UIImage? 
{    
let imageViewScale = max(inputImage.size.width / viewWidth,
                         inputImage.size.height / viewHeight)

// Scale cropRect to handle images larger than shown-on-screen size
let cropZone = CGRect(x:cropRect.origin.x * imageViewScale,
                      y:cropRect.origin.y * imageViewScale,
                      width:cropRect.size.width * imageViewScale,
                      height:cropRect.size.height * imageViewScale)

// Perform cropping in Core Graphics
guard let cutImageRef: CGImage = inputImage.cgImage?.cropping(to:cropZone)
else {
    return nil
}

// Return image to UIImage
let croppedImage: UIImage = UIImage(cgImage: cutImageRef)
return croppedImage
}

如何不使用 GCRect 在图像中绘制对象并将其用作 cropZone?任何帮助将不胜感激。

你问的是一个相当复杂的任务,超出了 SO 问题的范围。我可以给你一个你需要做什么的大纲:

  1. 实现一种绘图方法,让用户可以在图像之上绘图并根据该绘图创建一个封闭的CGPath/UIBezierPath

  2. 将该路径安装到图像视图的图层蒙版中 属性。这会将图像的一部分隐藏在外面

  3. 找到用户绘制的形状的边界矩形,然后像上面那样裁剪到它。