2016-04-15 2 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() 

これは、イメージ内に線を引いてコンテキストを返すために書いた行です。私は、インポートされた画像のコンテキストを選択することはできませんまたは私がしようとすると、描画する場合は、最後にnilを返します。私はこれまでの間違いを理解することができませんでした。画像ビューで画像に単純な線を描く方法を提案できますか?

答えて

3

あなたは

確かに画像表示で画像に簡単な線を描画する方法を提案することができます。イメージコンテクストを作る。イメージビューのイメージをコンテキストに描画します。コンテキストに線を描画します。コンテキストから結果のイメージを抽出し、コンテキストを閉じます。抽出した画像を画像ビューに割り当てます。

例:後

enter image description here

:前

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

第2の画像内の

enter image description here

、(TO(100,100)から実行されているラインに気づきます150,150)。

+0

このコードはサンプルコードの上に表示されますか? CGContextDrawImage(コンテキスト、CGRect(x:0、y:0、width:myRGBA!.width、height:myRGBA !.height)、ciImage) を使用してイメージをコンテキストに描画しようとしていますが、 ciImageのCGImageエラーへの変換に固執しました。私は上記のコードをチェックできますか? –

+0

CGContextDrawImage(コンテキスト、CGRect(x:0、y:0、width:myRGBA!.width、height:myRGBA !.height)、cgImageMade) myImageを使用して、以下のコードであなたの提案をdrawInRectで試してからCGContextDrawImageを試しました。 CGContextMoveメソッドとCGContextAddメソッドを追加した後、私は結果を に戻しましたvar result:UIImage = 0、y:0、width:300、height:300) UIGraphicsGetImageFromCurrentImageContext(); しかし私は結果としてゼロを得た。 –

+0

"しかし、私はCGImageエラーへのciImageの変換に立ち往生している"あなたの問題のように聞こえる。あなたはこの物語にCIImageを持ってはいけません。 CGImageに変換する必要もありません。 UIImageはグラフィックスコンテキストに直接描画することができます。 – matt