如何合并透视图像(3D变换)?

时间:2012-09-17 10:04:38

标签: iphone uiimage core-image cgimage

enter image description here

如何合并这两个图像(参见附图)。我正在使用以下代码。它适用于普通图像,不适用于3D变换图像。如何处理这个问题。我搜索过很多次仍然没有得到正确的结果。请帮我。提前谢谢。

UIImage *mergedImage;
UIGraphicsBeginImageContext(backgroundImageView.frame.size);
[backgroundImageView.layer  renderInContext:UIGraphicsGetCurrentContext()]; //bacgroundImageView here
mergedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

2 个答案:

答案 0 :(得分:0)

您可以创建一个CGImageRef,其中包含要置于顶部的扭曲图像(该图像的背景为0%alpha),这样您就可以使用上面的代码混合图像。

所以你真正想要的是如何将3D变换应用于图像。更准确地说,正如您正在寻找" perspective"用你自己的话说,你正在研究如何将单应性变形为图像。

CoreImage programming guide指定CIPerspectiveTransform是要走的路,遗憾的是,自iOS 5.1起,这在iOS上无法使用。

所以你有几个选择:

  • 如果您只想显示结果混合而不是操纵它,您可以在彼此的顶部使用两个UIImageView,一个包含使用巧妙设计的{{{ 1}}

  • 如果您绝对需要混合图像,则需要使用其他框架,例如OpenCVCATransform3D是您正在寻找的功能)或OpenGL ES

答案 1 :(得分:0)

不幸的是,renderInContext:只能展平2D变换。它无法展平应用于图层的3D变换。没有办法解决这个问题。