如何在图像上画线/绘画?

How to draw a line / paint on a image?

到目前为止,在我的尝试中,我能够在普通图像上画线,比如创建我自己的 CGRect 大小的普通上下文并在其上画线。我看到的所有教程都是如何在创建的 x*y 大小的图像上下文上绘制。但是我想在已经存在的图像上下文(例如狗的图片)上画线并制作一些图画。但到目前为止,我没有得到我想要的结果。这是我测试过的代码,无需分配图像,我就可以绘制线条。但是导入图像后,我没有在图片上得到想要的线条。

let myImage = UIImage(named: "hqdefault.jpg")!
let myRGBA = RGBAImage(image: myImage)!

UIGraphicsBeginImageContextWithOptions(CGSize(width: rgbaImage.width, height: rgbaImage.height), false, 0) 
let context:CGContextRef = UIGraphicsGetCurrentContext()!
CGContextMoveToPoint(context, CGFloat(100.0), CGFloat(100.0))
CGContextAddLineToPoint(context, CGFloat(150.0), CGFloat(150.0))

CGContextSetStrokeColorWithColor(context, UIColor.blackColor().CGColor)
CGContextStrokePath(context)

let image = UIGraphicsGetImageFromCurrentImageContext()

CGContextRestoreState(context)
UIGraphicsEndImageContext()
//: Return image
let view = UIImageView.init(image: image)
view.setNeedsDisplay()

这些是我写的用来在图像中画一条线的行,return它是上下文。如果我尝试,我无法选择导入的图片上下文或绘制线条,因为它最终 returns nil。到目前为止,我无法弄清楚我的错误。你能建议如何在图像视图中的图片上画一条简单的线吗?

Can you suggest how to draw a simple line on a picture in image view

当然可以。制作图像上下文。将图像视图的图像绘制到上下文中。将线画到上下文中。从上下文中提取生成的图像并关闭上下文。将提取的图像分配给图像视图。

示例:

    let im = self.iv.image! // iv is the image view
    UIGraphicsBeginImageContextWithOptions(im.size, true, 0)
    im.drawAtPoint(CGPointMake(0,0))
    let p = UIBezierPath()
    p.moveToPoint(CGPointMake(CGFloat(100.0), CGFloat(100.0)))
    p.addLineToPoint(CGPointMake(CGFloat(150.0), CGFloat(150.0)))
    p.stroke()
    self.iv.image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

之前:

之后:

在第二张图片中,注意从 (100,100) 到 (150,150) 的行 运行。