我正在尝试从两个现有图像的合成中创建一个图像蒙版。
首先,我开始创建由一个小图像组成的合成,它是掩蔽图像,以及一个与背景大小相同的较大图像:
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 作为掩码,它工作正常,只是当我尝试从多个图像中制作它时它会中断。
我认为这是一个色彩空间的事情,但似乎无法修复它。任何帮助深表感谢!