如何在iOS中用图像着色图像的非透明部分?

时间:2014-05-02 09:38:41

标签: 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已经改变。这很模糊。 那么,我的解决方案有什么问题吗?

1 个答案:

答案 0 :(得分:1)

根据您的需要,有几个Core Image filters可能会有用。对于您在评论中描述的情况(白框,透明中心),请查看CIMultiplyCompositing。此滤镜将两个图像的颜色分量相乘。如果要将白框的颜色更改为红色,则可以将帧图像与纯橙色图像合成;纯白色(RGBA = 1,1,1,1)和纯红色(RGBA = 1,0,0,1)的产品应为纯红色。透明像素应保持透明。

如果你想做其他事情,比如应用模糊,你可以使用不同的过滤器。有许多可供选择,您可以在上面链接的Core Image过滤器参考中阅读所有这些内容。