如何将 CAShapeLayer 坐标转换为 CIRectangleFeature 以进行手动裁剪

How to convert CAShapeLayer coordinates to CIRectangleFeature for manual crop

我正在处理手动图像裁剪功能。为此,我使用四个坐标绘制 CAShapeLayer,分别称为 topLeft、topRight、bottomRight 和 bottomLeft。用户可以平移点和 select 裁剪区域。 我坚持将这些点转换为核心图像坐标并使用 CIPerspectiveTransform 进一步裁剪。

将图像设置为 imageView 并使用形状图层遮盖 imageView。

self.imageView = img
imageView.layer.mask = shapeLayer // set here your shape layer

现在你的 imageView 已经裁剪了图片。

从当前上下文中获取图像如下

UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, 0);
imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

// check cropping image
let resultImageView = UIImageView(frame: self.view.frame)
resultImageView.image = image
self.view.addSubview(resultImageView)