Swift 如何合并一个图像以填充其他具有形状的图像?

Swift 如何合并一个图像以填充其他具有形状的图像?,swift,core-graphics,uibezierpath,core-image,Swift,Core Graphics,Uibezierpath,Core Image,我想将一个图像合并到一个形状中的另一个图像。例如: 1-人物形象 2-形状图像: 那怎么画呢。我已经实现了合并,但它没有填充到该形状。可以使用Quartz 2D框架中的掩蔽函数来实现。这比使用UI Kit的更高级图像功能要复杂一点,但Quartz 2D为您提供了更强大的能力来使用酷炫的图形技术 相关的苹果开发者指南可以在这里找到: 对于本例,您希望为形状图像的内部部分创建遮罩形状。有两种方法可以做到这一点。一种方法是使用图像编辑软件创建第二个遮罩图像,其大小与您的形状图像相同,在希望人物图像

我想将一个图像合并到一个形状中的另一个图像。例如:

1-人物形象

2-形状图像:


那怎么画呢。我已经实现了合并,但它没有填充到该形状。

可以使用Quartz 2D框架中的掩蔽函数来实现。这比使用UI Kit的更高级图像功能要复杂一点,但Quartz 2D为您提供了更强大的能力来使用酷炫的图形技术

相关的苹果开发者指南可以在这里找到:

对于本例,您希望为形状图像的内部部分创建遮罩形状。有两种方法可以做到这一点。一种方法是使用图像编辑软件创建第二个遮罩图像,其大小与您的形状图像相同,在希望人物图像出现的区域使用纯黑色,在不希望出现的区域使用白色。在本例中,这将是蓝色形状内的区域。重要的是不要裁剪此图像,否则它们将无法精确匹配

创建遮罩图像的另一种方法是基于形状图像动态地创建遮罩图像,老实说,这就是我的方法。这意味着您在应用程序中包含的图像更少,如果您对形状图像进行了任何更改,您也不必重新创建遮罩图像。您可以通过对形状图像的格式化方式进行一些小的更改来实现这一点。您需要使用一种允许透明度的格式(首选png),以便在形状之外的图像部分具有alpha透明度,而在JPEG图像中为白色。确保图像中心的部分是白色的(实际上,形状图像的所需部分中没有使用的任何颜色都可以,但在本例中我将使用白色),并且在图像压缩后,图像中没有非纯白色的部分

然后,您将使用石英选择白色区域,并从中创建一个遮罩。这项技术有点复杂,但您需要的内容可以在我上面链接的文档中找到。因此,您可以从静态掩蔽图像开始,然后在获得第一种技术的代码后转换为更复杂的技术

获得蒙版图像后,将使用函数cgimamaskcreate(:::::)创建蒙版本身。然后,您可以使用函数CGImageCreateWithMask(::)将遮罩应用于人物图像,该函数将为您提供人物肖像的图像,并从中心裁剪出正确的形状

最后,你可以在你的应用程序中显示这一点,将蒙面人物图像放在形状图像的顶部,瞧,你将得到你想要的东西


另外,请记住,在使用Quartz 2D框架时,您必须确保在不再需要图像时释放图像,否则可能会出现内存泄漏。

谢谢,我有一个线索