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