首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从UIImage到正方形部分

从UIImage到正方形部分
EN

Stack Overflow用户
提问于 2017-01-27 17:02:11
回答 1查看 818关注 0票数 1

我有一个UIScrollView,它包含一个UIImage。最上面是一个框,用户可以移动该图像,以便该部分被裁剪。

这张截图解释得更好了:

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

然后,我希望能够将滚动视图/UIImage裁剪到这个大小,并存储裁剪后的图像。

这不应该很难,但我已经花了很长时间尝试截图,UIGraphicsContext等,似乎什么都做不到。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-28 13:28:44

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

代码语言:javascript
复制
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用于UIGraphicsImageRender -如果不运行,它将无法工作。

用麦田盒大小初始化这一点。

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

然后返回在此点绘制的图像!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41899274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档