0

要件は次のとおりです。

  1. 入力は PNG A と PNG B であり、出力は PNG A から PNG B を引いたもの (PNG A に PNG B の形状の穴を掘る) である必要があります。これはドロー補完アクションであるべきだと思います。それを行うには、ライブラリまたはフレームワークが必要です。

  2. このフレームワークは Xcode で動作し、さまざまなプラントフォーム (MAC/iOS/Win... など) でも使用できます。したがって、C/C++ で実装する必要があると思います。

  3. 例やコードは、私の問題に大きなプラスになるはずです...私はそれを行う方法が本当にわかりません:(

助言がありますか?

4

2 に答える 2

2

このコードを試すことができます:

UIImage *imgA = [UIImage imageNamed:@"pngA.png"];
UIImage *imgB = [UIImage imageNamed:@"pngB.png"];

UIGraphicsBeginImageContextWithOptions(imgA.size, NO, imgA.scale);
[imgA drawAtPoint:CGPointZero];
[imgB drawAtPoint:CGPointZero blendMode:kCGBlendModeDestinationOut alpha:1.0f];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2012-04-19T06:25:29.953 に答える
0

マスクを使用してこれを行うことができます。http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

次のコードを試してください:

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
    CGImageGetHeight(maskRef),
    CGImageGetBitsPerComponent(maskRef),
    CGImageGetBitsPerPixel(maskRef),
    CGImageGetBytesPerRow(maskRef),
    CGImageGetDataProvider(maskRef), NULL, false);

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
    return [UIImage imageWithCGImage:masked];
}
于 2012-04-19T10:10:22.787 に答える