CIPerspectiveCorrection按原样返回图像,未拉伸

时间:2019-07-19 20:31:36

标签: ios swift crop cifilter

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

enter image description here

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

如何在不拉伸以填充矩形的情况下按原样返回2d平面上的图像?

1 个答案:

答案 0 :(得分:1)

如果您只想按原样放置多边形的内部 ,则可以使用Core Graphics API来用路径遮罩图像。 也许您可以在this question中找到一些灵感。