Я пытаюсь создать маску изображения из композита из двух существующих изображений.Создание маски с CGImageMaskCreate все черное (iphone)
Сначала я начать с создания композитного материала, который состоит из небольшого изображения, которое является маскировка изображения, и увеличенное изображение, которое имеет такой же размер, как фон:
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 в качестве маски, он отлично работает, это просто, когда я пытаюсь сделать это из нескольких изображений, которые он ломает.
Я думал, что это была вещь в цветовом пространстве, но, похоже, ее не исправить. Любая помощь высоко ценится!
Помогло мне очень. Не могли бы вы добавить верхний и нижний колонтитул функции, чтобы завершить? – Eden
Что такое thumbnailPoint.x точно ??! @catlan –
@ Reza.Ab извините, я не помню. scaled * также выглядит странно 9 лет спустя. Я предполагаю, что в большинстве случаев маска rect и прямоугольник изображения должны быть одинаковыми. Пожалуйста, попробуйте его и сообщите нам, что вы найдете, – catlan