因此,我遮住了我的形象:
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];而且它工作得很好,但是结果图像在它被遮蔽的地方有黑色,我如何设置它在它被遮蔽的地方有白色呢?
发布于 2011-04-02 18:40:30
如果你正在遮罩没有alpha通道的JPEG图像,这将会发生(黑色背景而不是透明的)。
因此,在屏蔽之前,您需要执行以下操作:
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);..。
确保发布创建的图像、上下文和色彩空间...
发布于 2010-10-03 11:46:12
图像应该是透明的,在“遮蔽”的地方;你看到的颜色将取决于你在什么背景上绘制它。
(我不记得是否要求源图像具有alpha通道。)
也许有必要确保imageView.opaque = NO。
发布于 2011-03-30 08:43:34
试试这个:
imageView.opaque = NO;
imageView.backgroundColor = [UIColor clearColor];此外,用于遮罩的图像应该是黑白的(而不是透明的)。
https://stackoverflow.com/questions/3848430
复制相似问题