iOS版雨燕 - 在UIImage的画直线保存到文件(iOS Swift - Draw line o

2019-10-22 11:47发布

图纸信息我发现所有的iOS是关系到如何在一个视图中显示的东西。 具体地层叠不同的图像,rects,或路径在视图中可以看到在屏幕上。 我有麻烦查找信息,我怎么可以实际操作一个UIImage本身。

具体来说,我正在寻找打开一个图像文件作为一个UIImage(已经知道如何做到这一点),绘制图像中的线条,然后保存新的UIImage到一个文件中(已经知道如何做到这一点为好)。 我会假设会有一个相当简单的方法来做到这一点,但每一个解决方案,我觉得似乎进入一个复杂的解决方案,这似乎有点小题大做了什么,我认为将是一个次要的任务。 我该如何去简单地这样做呢? 或者是更复杂的解决方案的必由之路?

我猜类似于此之前已经回答了一些东西,但我缺乏在该地区的知识似乎使其难以正确地搜索并找到这些问题的答案。

Answer 1:

从&到坐标是图像的像素单元

func drawLineOnImage(size: CGSize, image: UIImage, from: CGPoint, to: CGPoint) -> UIImage {
    UIGraphicsBeginImageContext(size)
    image.drawAtPoint(CGPointZero)
    let context     = UIGraphicsGetCurrentContext()
    CGContextSetLineWidth(context, 1.0)
    CGContextSetStrokeColorWithColor(context, UIColor.blueColor().CGColor)
    CGContextMoveToPoint(context, from.x, from.y)
    CGContextAddLineToPoint(context, to.x, to.y)
    CGContextStrokePath(context)

    let resultImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return resultImage
}

可以精细Objective-C的回答这里



Answer 2:

通过Nadeesha Lakmal更新的雨燕从4回答

func drawLineOnImage(size: CGSize, image: UIImage, from: CGPoint, to: CGPoint) -> UIImage {
    UIGraphicsBeginImageContext(size)
    image.draw(at: CGPoint.zero)
    guard let context = UIGraphicsGetCurrentContext() else { return UIImage() }
    context.setLineWidth(1.0)
    context.setStrokeColor(UIColor.blue.cgColor)
    let startPoint = CGPoint(x: from.x, y: from.y)
    let endPoint = CGPoint(x: to.x, y: to.y)
    context.move(to: startPoint)
    context.addLine(to: endPoint)
    context.strokePath()

    guard let resultImage = UIGraphicsGetImageFromCurrentImageContext() else { return UIImage() }
    UIGraphicsEndImageContext()
    return resultImage
}


文章来源: iOS Swift - Draw line on UIImage to save to file