2012-01-13 134 views
3

我需要在给定的四边形内绘制一个BufferedImage。 我想这样做:将矩形图像绘制/翘曲为四边形图像

enter image description here

我想猫变形被四边形内绘制。

Graphics对象具有不同的绘制图像的方法,但只能沿着X和Y轴拉伸它们(请参阅Graphics.drawImage方法)。

我梦想的是一种方法Graphics.drawImage()其中我指定了4个四边形点的坐标。有没有简单的方法来做到这一点?

回答

1

我不知道任何简单的方法来做到这一点与标准的Java包。你当然可以实现你自己的双线性或透视变换来处理四个角落图像变形,但是谁愿意做所有这些工作。

我认为你最好的选择是研究Java Advanced Imaging API(javax.media.JAI)。这里是一篇文章,谈论与JAI的透视变换:http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/Geom-image-manip.doc.html#55959

+0

非常感谢。我会看看那个! – julien 2012-01-14 20:25:52

1

你会发现代码如何在objective-c这里https://github.com/hfossli/AGGeometryKit/。我相信它可以移植到Java。

+0

谢谢。我会尝试将它移植到java中。 – julien 2013-03-15 15:00:54

+0

好的,很酷。你真正需要的唯一东西是在这里找到的代码:http://stackoverflow.com/a/12820877/202451。您应该可以使用该代码为java创建一个3d矩阵。这是在这个文件的底部找到相同的代码https://github.com/hfossli/AGGeometryKit/blob/master/Source/AGQuad.m – hfossli 2013-03-15 17:47:49

+0

你需要一个4行和列的矩阵...我不' t认为这将做http://developer.android.com/reference/android/graphics/Matrix.html – hfossli 2013-03-15 17:49:29