【发布时间】:2010-10-12 14:16:08
【问题描述】:
我正在尝试从两个现有图像的合成中创建一个图像蒙版。
首先,我开始创建一个合成图像,其中包含一个作为掩蔽图像的小图像和一个与背景大小相同的较大图像:
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 作为掩码,它可以正常工作,只是当我尝试从多个图像中制作它时它会中断。
我认为这是一个色彩空间问题,但似乎无法修复它。非常感谢任何帮助!
【问题讨论】:
标签: objective-c iphone cocoa-touch core-graphics image-manipulation