ios - 如何使用图像对 iOS 中图像的非透明部分进行着色?

标签 ios drawrect core-image

有谁知道如何对非透明图像的部分进行着色并保留透明图像?你能给我一个指示吗? 谢谢

编辑: 图像在中心有一个透明区域和白色边框 (alpha 0.8)。我只想用图像填充白色部分(并保留其 alpha 和透明部分)。在这种情况下,我认为我应该使用蒙版图像,然后将其与我已有的图像混合。

+(UIImage *)createImageFromImageA:(UIImage *)imgA andImageMask:(UIImage *)imgB{

CGImageRef maskRef = imgB.CGImage;

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);

CGImageRef masked = CGImageCreateWithMask([imgA CGImage], mask);
return [UIImage imageWithCGImage:masked];
}

看起来,输出图像与旧图像相同,而不是保持图像的 alpha 已更改。很模糊。 那么,我的解决方案有什么问题吗?

最佳答案

有几个Core Image filters这可能有用,具体取决于您的需要。对于你在评论中描述的情况(白框,透明中心),看看CIMultiplyCompositing .此滤镜将两个图像的颜色分量相乘。如果您想将白色框架的颜色更改为红色,您可以将框架图像与纯橙色图像合成;纯白色 (RGBA=1,1,1,1) 和纯红色 (RGBA=1,0,0,1) 的乘积应该是纯红色。透明像素应保持透明。

如果您想做其他事情,例如应用模糊,您可以使用不同的滤镜。有很多可供选择,您可以在上面链接的 Core Image 滤镜引用中阅读所有相关信息。

关于ios - 如何使用图像对 iOS 中图像的非透明部分进行着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23425047/

相关文章:

ios - 有关 Swift 上 iOS 中 drawRect 的性能问题

objective-c - UIWebView 到 UIImage 无效上下文 0x0

ios - CIContext 呈现 : toCVPixelBuffer: bounds: colorSpace: function does not work for images with alpha channel

ios - 在 Swift 中解包 Dictionary of Dictionaries 时遇到麻烦

iphone - 关于iOS绘图的问题

cocoa - CIImage : How to use CIAffineTransform?

ios - 将 MTLTexture 转换为 CVPixelBuffer

ios - 在 uitabbarcontroller 中更改选项卡名称

ios - Swift - 在所有设备的相同位置将 subview 添加到 UIImageView

ios - UITextField 中的静态字符前缀