UIImage 遮罩在 iPhone 上提供黑色背景(而不是在模拟器中)
我有没有 alpha 通道的蒙版图像,纯黑和白,中心有一个黑色多边形,周围是白色。
我有想要遮盖的 png 图像。 png 有一个 Alpha 通道。 使用下面的方法:在模拟器上可以,但在设备上背景是黑色的... 有什么想法可以解决这个问题吗?
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
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);
//CGImageRelease(mask);
//CGImageRelease(maskRef);
return [UIImage imageWithCGImage:masked];
}
I've got mask images w/o alpha channel, pure black and white with a black polygone on the center sourrounded by white.
I've got png's image that I'd like to mask. the png have got an alpha channel.
using the method here below : ok on simulator, but background is black on device ...
any idea to fix that ?
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
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);
//CGImageRelease(mask);
//CGImageRelease(maskRef);
return [UIImage imageWithCGImage:masked];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题已解决:
解决方案是:要屏蔽的图像必须使用 Alpha 通道创建。
Alpha 通道可能无法从代码创建。
Problem Solved :
solution is : the image to be masked MUST be created with an alpha channel.
The Alpha channel may not be created from the code.
与以下代码相同
}
}
在模拟器上完美运行,但在 iPhone 设备上则不然:所有图像都被遮盖,但背景为黑色。
Same here with the following code
}
}
Works perfectly on simulator but not on iPhone device : all images are masked but with black background.