【发布时间】:2018-09-17 13:37:21
【问题描述】:
我正在尝试裁剪图像,但裁剪没有产生 UIImage 的预期部分。图像看起来没有方向和镜像。这很混乱。
@IBOutlet weak var imgPreViewOutlet: UIImageView!
guard
let cgImage = self.imgPreViewOutlet.image.cgImage else {return}
// NORMALISE COORDINATES
let topXn = TOP_LEFT.x/screenWidth
let topYn = TOP_LEFT.y/screenHeight
let widthn = (TOP_RIGHT.x - TOP_LEFT.x)/screenWidth
let heightn = (BOTTOM_RIGHT.y - TOP_RIGHT.y)/screenHeight
// DIMENSION OF CGIMAGE
let cgImgWidth = cgImage.width
let cgImgHeight = cgImage.height
let cropRect = CGRect.init(x: topXn * CGFloat.init(widthn) , y: topYn * CGFloat.init(heightn), width: widthn * CGFloat.init(cgImgWidth), height: heightn * CGFloat.init(cgImgHeight))
if let cgCropImged = cgImage.cropping(to: cropRect){
print("cropRect: \(cropRect)")
self.imgPreViewOutlet.image = UIImage.init(cgImage: cgCropImged)
}
裁剪:
【问题讨论】:
-
@JonJ 提出了一个很好的观点。我可以添加第二个吗?您使用的是什么具体的
CIFilter?你没有在你的代码中发布它。但根据您的图片,我强烈建议使用CIPerspectiveCorrection,而不是CICrop或(正如您发布的代码所暗示的)CoreGraphics。 -
我目前没有使用任何过滤器,我只是想要裁剪矩形作为第一步。但感谢您的提示!
-
既然您将其标记为 CoreImage,我假设您这样做了。您的图像正是 CIPerspectiveCorrection 可以做到的。这个过滤器需要 any 4 个点 - 它不需要是...平行四边形? CGRect?...自从我学习几何学以来已经有几十年了......并且种植了其他所有东西。如果您之前没有使用过任何过滤器,我可以发布一个相当简单的示例(Swift 4)。让我知道。 developer.apple.com/library/archive/documentation/…
-
@dfd 如果您可以在 swift 4 中发布一个示例,那就太好了!
标签: ios swift core-image