Java图像转换

8

我需要为我的图像创建3D深度效果。编号1是我拥有的,编号2是我想要将编号1转换成的形状。那么,在Java标准图形库或其他开源库中是否有此类方法呢?

alt text


也许这个有所帮助。它仅使用JavaFX而没有外部库。 - Matthias Braun
2个回答

5

使用AffineTransform类无法完成此操作。请参阅维基百科关于仿射变换的文章:

一般来说,仿射变换由线性变换(旋转、缩放或剪切)和平移(或“移位”)组成。

您需要的是某种透视变换。请参考http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/PerspectiveTransform.html

透视变换能够将任意四边形映射到另一个任意四边形,同时保持直线的直线性。 与仿射变换不同,源中的线的平行性在输出中不一定得到保留。

来源http://answers.google.com/answers/threadview/id/515829.html

Java 高级图像 API 允许您轻松地执行透视变换。与 Java2D 和 Java3D 中相同,这些例程是经过优化的,它们不以通常的 java 解释方式运行 - 因此它们非常快速。可以从以下位置下载 JAI:http://java.sun.com/products/java-media/jai/downloads/download-1_1_2.html 您可以在以下位置找到有关如何运行透视变换的信息:http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/

谢谢您的帮助,但我没有找到任何关于如何使用JAI透视变换的示例,而且它的JavaDocs信息相当不充分... - newbie
有人在这里帮我解决了这个问题的数学部分:https://dev59.com/YFHTa4cB1Zd3GeqPWf99 - Scott

0

如果你想在3D中进行大量快速绘图,我建议你研究一下OpenGL / JOGL等3D渲染解决方案。

如果只是一个快速的一次性转换,那么你可以通过以下方式轻松模拟:

  • 循环遍历2中的所有线条。
  • 缩放1中对应的线条,并将其绘制在2中的线条上,将其拉伸到正确的比例(你需要一些基本的数学来计算这个)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接