Я пытаюсь создать маску изображения из композита из двух существующих изображений.
Сначала я начинаю с создания композита, который состоит из небольшого изображения, которое является маскирующим изображением, и большего изображения, которое имеет тот же размер, что и фон:
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 в качестве маски, он отлично работает, это просто, когда я пытаюсь сделать это из нескольких изображений, которые он ломает.
Я думал, что это была вещь в цветовой гамме, но, похоже, ее не исправить. Любая помощь очень ценится!