如何合并图像以填充其他形状的图像?

时间:2016-06-08 04:25:39

标签: swift core-graphics uibezierpath core-image

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

1-人物形象 enter image description here

2-形状图像: enter image description here

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

1 个答案:

答案 0 :(得分:2)

使用Quartz 2D框架中的屏蔽功能可以做到这一点。它比使用UI Kit的更高级别图像功能更复杂,但Quartz 2D为您提供了更酷的图形技术。

可以在此处找到相关的Apple开发人员指南:https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html

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

创建遮罩图像的另一种方法是根据形状图像动态地执行此操作,老实说,这就是我要这样做的方式。这意味着您在应用中包含的图片较少,如果您对形状图像进行了任何更改,则您也不必重新创建蒙版图像。您可以通过对形状图像的格式进行细微更改来实现此目的。您需要使用允许透明度的格式 - 首选png - 以便在图像外部的图像部分中存在Alpha透明度,在JPEG图像中为白色。确保图像中心的部分是白色的(实际上,在形状图像的所需部分中未使用的任何颜色都可以使用,但是我会在这个例子中说白色)并且你没有&#39 ;图像压缩后,它的部分区域不是纯白色。

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

当你拥有掩蔽图像时,你将使用CGImageMaskCreate函数创建掩码( :)。然后,您可以使用CGImageCreateWithMask( :)函数将蒙版应用于人物图像,这将为您提供包含人物肖像的图像,并从中心裁剪出正确的形状。

最后,您可以通过将蒙面人物图像放在形状图像上来在您的应用中显示此信息,瞧,您将拥有您正在寻找的内容。

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

相关问题