Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用图像对iOS中图像的不透明部分着色?_Ios_Drawrect_Core Image - Fatal编程技术网

如何使用图像对iOS中图像的不透明部分着色?

如何使用图像对iOS中图像的不透明部分着色?,ios,drawrect,core-image,Ios,Drawrect,Core Image,有人知道如何对不透明图像的部分着色并保留透明图像吗?你能给我一个指示吗? 谢谢 编辑: 图像的中心有一个透明区域和白色边框(alpha 0.8)。我只想用图像填充白色部分(并保持其alpha和透明部分)。在这种情况下,我想我应该使用一个遮罩图像,然后将它与我已有的图像混合 +(UIImage *)createImageFromImageA:(UIImage *)imgA andImageMask:(UIImage *)imgB{ CGImageRef maskRef = imgB.CGImag

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

编辑: 图像的中心有一个透明区域和白色边框(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已更改。很模糊。 那么,我的解决方案有什么问题吗?

根据您的需要,有几种可能是有用的。对于您在评论中描述的情况(白色框架,透明中心),请查看。此过滤器将两个图像的颜色分量相乘。如果要将白色边框的颜色更改为红色,可以将边框图像与实心橙色图像合成;纯白(RGBA=1,1,1,1)和纯红(RGBA=1,0,0,1)的乘积应为纯红。透明像素应该保持透明


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

您能否提供更多信息,以确定是要生成图像还是要以这种方式显示。任何样本图像/参考图像来更好地解释它。好吧,假设我有一个图像,其中心是透明的,其边框是白色的(alpha=1)。(好像是一幅画框)。我想要的只是定制框架(更改颜色、更改alpha,甚至模糊它…)