2 つの既存の画像を合成した画像マスクを作成しようとしています。
最初に、マスキング イメージである小さなイメージと、背景と同じサイズの大きなイメージで構成されるコンポジットの作成から始めます。
UIImage *baseTextureImage = [UIImage imageNamed:@"background.png"];
UIImage *maskImage = [UIImage imageNamed:@"my_mask.jpg"];
UIImage *shapesBase = [UIImage imageNamed:@"largerimage.jpg"];
UIImage *maskImageFull;
CGSize finalSize = CGSizeMake(480.0, 320.0);
UIGraphicsBeginImageContext(finalSize);
[shapesBase drawInRect:CGRectMake(0, 0, 480, 320)];
[maskImage drawInRect:CGRectMake(150, 50, 250, 250)];
maskImageFull = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
この UIImage (MaskImageFull) を出力でき、正しく表示されます。これはフルサイズの背景サイズで、白い背景にマスク オブジェクトが黒で、画面の適切な場所にあります。
次に、これを介して MaskImageFull UIImage を渡します。
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);
UIImage *retImage= [UIImage imageWithCGImage:masked];
問題は、retImage がすべて黒であることです。事前に作成された UIImage をマスクとして送信すると、正常に機能しますが、複数の画像から作成しようとすると、壊れます。
色空間の問題だと思ったのですが、修正できなかったようです。どんな助けでも大歓迎です!