首页 > 解决方案 > 如何根据顶部正面图像裁剪图像?

问题描述

我的目的是UIImageUIView. 所以我想在红色圆圈上添加清晰的边框,使输出图像看起来像第二张图像。

在此处输入图像描述 现在我想要这样的东西:我想在红色圆圈上添加清晰的背景,以便输出图像看起来像下图。(我知道如果我添加清晰的边框那么我无法实现这一点,所以请建议我实现这一点)

在此处输入图像描述

这里我只添加了颜色,这2种颜色实际上是图像

编辑

我可以通过使用下面的代码来做到这一点,但切割区域不是四舍五入的。

func cut(hole: CGRect, inView v: UIView) {
    let p:CGMutablePath = CGMutablePath()
    p.addRect(CGRect.init(x: v.frame.origin.x, y: v.frame.origin.y, width: v.frame.width, height: v.frame.height))
    p.addRect(hole)

    let s = CAShapeLayer()
    s.path = p
    s.fillRule = CAShapeLayerFillRule.evenOdd

    v.layer.mask = s
}

这是我的演示链接:https ://gofile.io/?c=jukO6B

电流输出

在此处输入图像描述

任何帮助将不胜感激。

标签: iosswiftuiviewuiimage

解决方案


最后我通过根据要求在这个答案中进行一些修改得到了解决方案:如何在 UIImage 中“切割”一个透明的洞?

func cut(hole: CGRect, inView v: UIView) {
    let p:CGMutablePath = CGMutablePath()
    v.clipsToBounds = false
    p.addRect(CGRect.init(x: v.frame.origin.x, y: v.frame.origin.y, width: v.frame.width, height: v.frame.height))
    p.addRoundedRect(in: CGRect.init(x: self.vwCarContainer.frame.origin.x, y: self.vwCarContainer.frame.origin.y, width: self.vwCarContainer.frame.width, height: self.vwCarContainer.frame.height), cornerWidth: self.vwCarContainer.layer.cornerRadius, cornerHeight: self.vwCarContainer.layer.cornerRadius)

    let s = CAShapeLayer()
    s.path = p
    s.fillRule = CAShapeLayerFillRule.evenOdd

    v.layer.mask = s
}

感谢所有帮助我实现这一目标的人。


推荐阅读