CIPerspectiveCorrection return 图像原样,未拉伸

CIPerspectiveCorrection return image as is, not stretched

我正在使用 CIFilter 的 CIPerspectiveCorrection 裁剪图像,但我要裁剪的部分并不总是完美的矩形,因此裁剪后的图像 return 失真。

let filter: CIFilter = CIFilter(name: "CIPerspectiveCorrection")!
filter.setValue(CIImage(cgImage: inputImage.cgImage!), forKey: "inputImage")
filter.setValue(CIVector(cgPoint: topLeft), forKey: "inputTopLeft")
filter.setValue(CIVector(cgPoint: topRight), forKey: "inputTopRight")
filter.setValue(CIVector(cgPoint: bottomLeft), forKey: "inputBottomLeft")
filter.setValue(CIVector(cgPoint: bottomRight), forKey: "inputBottomRight")

let cutImageRef = CIContext(options: nil).createCGImage(filter.outputImage!, from: filter.outputImage!.extent)!

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

如何 return 图像在二维平面上的原样而不拉伸以填充矩形?

如果您只想要多边形内部 原样,您可以使用 Core Graphics API 使用路径遮盖图像。 也许你可以在this question.

中找到一些灵感