3

iOS アプリケーションの 1 つで、 を使用して画像の一部を切り取ろうとしていCGImageMaskます。次のコードで画像をマスキングすることに成功しました。

- (UIImage *)maskImage:(UIImage *)referenceImage 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([referenceImage CGImage], mask);
    return [UIImage imageWithCGImage:masked];
}

したがって、私のイメージは次のようになります。

myImageView.image = [self maskImage:[UIImage imageNamed:@"image.png"] 
                           withMask:[UIImage imageNamed:@"mask.png"]];

問題: 出力画像は参照画像 ('image.png') と同じサイズで、周囲に透明な領域があります。しかし、これらの透明な領域を避けて、結果の画像をトリミングしたいと思います。どうすればこれを達成できますか?いくつかのマスクがあり、マスク フレームはすべてに似ているわけではありません。ここに問題の概要の参考画像を添付します。友達を助けてください。前もって感謝します。

ここに画像の説明を入力

4

1 に答える 1