繁体   English   中英

将UIImage裁剪为方形部分

[英]Crop UIImage to square portion

我有一个包含UIImage的UIScrollView。 最重要的是用户可以移动图像的框,以便裁剪该部分。

这个截图更好地解释了它:

在此输入图像描述

因此,他们可以滚动图像,直到他们想要的部分在该框内。

然后,我希望能够将scrollView / UIImage裁剪为完全相同的大小并存储裁剪后的图像。

它应该不是很难,但我花了很多年时间尝试截图,UIGraphicsContext等等,似乎无法使用任何东西。

谢谢您的帮助。

我终于想出了如何让它发挥作用。 这是代码:

func croppedImage() -> UIImage {

    let cropSize = CGSize(width: 280, height: 280)
    let scale = (imageView.image?.size.height)! / imageView.frame.height
    let cropSizeScaled = CGSize(width: cropSize.width * scale, height: cropSize.height * scale)

    if #available(iOS 10.0, *) {
        let r = UIGraphicsImageRenderer(size: cropSizeScaled)
        let x = -scrollView.contentOffset.x * scale
        let y = -scrollView.contentOffset.y * scale
        return r.image { _ in
            imageView.image!.draw(at: CGPoint(x: x, y: y))
        }
    } else {
        return UIImage()
    }

}

所以它首先计算imageView和实际图像的比例。

然后它会创建该裁剪框的CGSize,如照片所示。 但是,宽度和高度必须按比例因子缩放。 (例如280 * 6.5)

您必须检查手机是否正在运行iOS 10.0 for UIGraphicsImageRender - 如果没有,它将无法正常工作。

使用裁剪框大小初始化此选项。

然后必须偏移图像,这是通过获取scrollView的内容偏移,否定它并乘以比例因子来计算的。

然后返回那时绘制的图像!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM