首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CGImageCreateWithMask效果很好,但在我生成的图像中,蒙版区域是黑色的,我如何将其设置为白色?

CGImageCreateWithMask效果很好,但在我生成的图像中,蒙版区域是黑色的,我如何将其设置为白色?
EN

Stack Overflow用户
提问于 2010-10-03 11:21:26
回答 4查看 8.1K关注 0票数 5

因此,我遮住了我的形象:

代码语言:javascript
运行
复制
    CGImageRef maskRef = [[UIImage imageNamed:@"testMask2.png"] CGImage];

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), nil, YES);

UIImage *image = [UIImage imageWithContentsOfFile:path];

CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);

imageView.image = [UIImage imageWithCGImage:masked];

而且它工作得很好,但是结果图像在它被遮蔽的地方有黑色,我如何设置它在它被遮蔽的地方有白色呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-02 18:40:30

如果你正在遮罩没有alpha通道的JPEG图像,这将会发生(黑色背景而不是透明的)。

因此,在屏蔽之前,您需要执行以下操作:

代码语言:javascript
运行
复制
    CGImageRef imageNoAlpha = [UIImage imageNamed:@"noAlphaImage.jpg"].CGImage;

CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();

CGFloat width = CGImageGetWidth(imageNoAlpha);
CGFloat height = CGImageGetHeight(imageNoAlpha);

CGContextRef ctxWithAlpha = CGBitmapContextCreate(nil, width, height, 8, 4*width, cs, kCGImageAlphaPremultipliedFirst);

CGContextDrawImage(ctxWithAlpha, CGRectMake(0, 0, width, height), imageNoAlpha);

CGImageRef imageWithAlpha = CGBitmapContextCreateImage(ctxWithAlpha);

CGImageRef masked = CGImageCreateWithMask(imageWithAlpha, mask);

..。

确保发布创建的图像、上下文和色彩空间...

票数 9
EN

Stack Overflow用户

发布于 2010-10-03 11:46:12

图像应该是透明的,在“遮蔽”的地方;你看到的颜色将取决于你在什么背景上绘制它。

(我不记得是否要求源图像具有alpha通道。)

也许有必要确保imageView.opaque = NO

票数 0
EN

Stack Overflow用户

发布于 2011-03-30 08:43:34

试试这个:

代码语言:javascript
运行
复制
imageView.opaque = NO;
imageView.backgroundColor = [UIColor clearColor];

此外,用于遮罩的图像应该是黑白的(而不是透明的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3848430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档