2016-04-15 228 views
2

到目前为止,在我的尝试中,我可以在普通图像上绘制线条,就像创建我自己的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() 

这些是我写的在图像中绘制一条线并返回其上下文的几行。我无法选择导入的图片上下文,或者如果我尝试绘制线条,因为它最终返回零。到目前为止,我无法弄清楚我的错误。你可以建议如何在图像视图中的图片上画一条简单的线条吗?

回答

3

您能否提供如何绘制简单的线条上的图片在图像视图

肯定。创建一个图像上下文。将图像视图的图像绘制到上下文中。在上下文中绘制线条。从上下文中提取结果图像并关闭上下文。将提取的图像分配给图像视图。

实施例:

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() 

之前:

enter image description here

后:

enter image description here

在第二图像中,请注意,从(100,100)延伸的线( 150,150)。

+0

如果可以,我可以看看上面的示例代码吗?我试图将图像绘制到上下文中,使用 CGContextDrawImage(context,CGRect(x:0,y:0,width:myRGBA!.width,height:myRGBA!.height),ciImage) 但我得到停留在将ciImage转换为CGImage错误。希望我可以检查上面的代码? –

+0

我在下面的代码中尝试了drawInRect,然后使用CGContextDrawImage myImage,将CGContextDrawImage(context,CGRect(x:0,y:0,width:myRGBA!.width,myRGBA!.height),cgImageMade) drawInRect(CGRect(x:0,y:0,width:300,height:300),blendMode:CGBlendMode.Clear,alpha:1.0) 添加CGContextMove和CGContextAdd方法后,我将结果通过 var result:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 但我得到零结果。 –

+0

“但我被困在ciImage转换为CGImage错误”这听起来像你的问题。这个故事中你不应该有任何CIImage。你也不需要转换成CGImage。 UIImage可以直接将自己绘制到图形上下文中。 – matt