2016-08-12 4 views
-1

私はUIImageを持っていて、カットしたいと思っています。エッジには4つのCGポイントがあります。私はマスクでそれをやろうとしましたが、透明に色を変えるだけです。私は完全な新しいUIImageが必要です。誰か助けてくれますか? (Objective-Cで)4 CGPointsで画像をカット

ありがとう!

+0

[CGImageCreateWithImageInRect](https://developer.apple.com/library//mac/documentation/GraphicsImaging/Reference/CGImage/index.html#//apple_ref/c/func/CGImageCreateWithImageInRect)はあなたの友人です。 – Codo

+0

はい、私はCGRectをCGPointsだけ持っていません – Lothar

+0

4点は四角形か非長方形かを表しますか? – Codo

答えて

0

このようなコードを使用してください。 は画像であり、p0,p1,p2およびp3は入力としてCGPointです。

// Create clipping path 
UIBezierPath *path = [UIBezierPath bezierPath]; 
[path moveToPoint:p0]; 
[path addLineToPoint:p1]; 
[path addLineToPoint:p2]; 
[path addLineToPoint:p3]; 
[path closePath]; 

// Get boundary rectangle 
CGRect rect = path.bounds; 

// Create graphis context with translation and clipping 
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 1); 
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), -rect.origin.x, -rect.origin.y) 
[path addClip]; 

// draw image 
[originalImage drawAtPoint:CGPointZero]; 

// create resulting image 
UIImage *clippedImage = UIGraphicsGetImageFromCurrentImageContext(); 

// clean up 
UIGraphicsEndImageContext(); 

Iコードをテストしていない:clippedImageが得られる画像です。したがって、翻訳とクリッピングが正しい順序で設定されていないか、間違った記号を使用している可能性があります。

+0

それは動作します!しかし、あなたは短い辺を伸ばすことができるので、本当の矩形の画像が得られますか?スキャナアプリのように?今は透明です。 – Lothar

+0

だからこそ私は結果として得られるイメージがどのように見えるべきか尋ねました。あなたは以前に話していたはずです。そして、あなたが本当に望むものをよりよく説明する必要があります。あなたの4つの点がランダムではなく、いくつかの制約がある場合、「短辺」しかないことがあります。それらは台形を形成する。もしそうなら、これも同様に説明する必要があります。 – Codo

+0

はい、申し訳ありません。私はスキャナアプリのようにしたい。たとえばScanBotまたはTinyScan – Lothar

関連する問題