私はUIImageを持っていて、カットしたいと思っています。エッジには4つのCGポイントがあります。私はマスクでそれをやろうとしましたが、透明に色を変えるだけです。私は完全な新しいUIImageが必要です。誰か助けてくれますか? (Objective-Cで)4 CGPointsで画像をカット
ありがとう!
私はUIImageを持っていて、カットしたいと思っています。エッジには4つのCGポイントがあります。私はマスクでそれをやろうとしましたが、透明に色を変えるだけです。私は完全な新しいUIImageが必要です。誰か助けてくれますか? (Objective-Cで)4 CGPointsで画像をカット
ありがとう!
このようなコードを使用してください。 は画像であり、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
が得られる画像です。したがって、翻訳とクリッピングが正しい順序で設定されていないか、間違った記号を使用している可能性があります。
それは動作します!しかし、あなたは短い辺を伸ばすことができるので、本当の矩形の画像が得られますか?スキャナアプリのように?今は透明です。 – Lothar
だからこそ私は結果として得られるイメージがどのように見えるべきか尋ねました。あなたは以前に話していたはずです。そして、あなたが本当に望むものをよりよく説明する必要があります。あなたの4つの点がランダムではなく、いくつかの制約がある場合、「短辺」しかないことがあります。それらは台形を形成する。もしそうなら、これも同様に説明する必要があります。 – Codo
はい、申し訳ありません。私はスキャナアプリのようにしたい。たとえばScanBotまたはTinyScan – Lothar
[CGImageCreateWithImageInRect](https://developer.apple.com/library//mac/documentation/GraphicsImaging/Reference/CGImage/index.html#//apple_ref/c/func/CGImageCreateWithImageInRect)はあなたの友人です。 – Codo
はい、私はCGRectをCGPointsだけ持っていません – Lothar
4点は四角形か非長方形かを表しますか? – Codo