Java图像转换

时间:2010-07-08 09:41:01

标签: java image transform

我需要为我的图像创建3D深度效果。第一个是我的,第二个是我希望转换为数字1的形状。那么Java标准图形库或其他一些开源库中是否有任何方法?

alt text http://i26.tinypic.com/27y8ntj.png

2 个答案:

答案 0 :(得分:5)

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

  

通常,仿射变换由线性变换(旋转,缩放或剪切)和平移(或“移位”)组成。

您需要的是某种形式的透视变换。来自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 Advanced Imaging 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/

答案 1 :(得分:0)

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

如果它只是一个快速的一次性转换,那么你可以通过

轻松地模拟这个
  • 循环播放2中的所有行。
  • 在1中缩放相应的线并将其绘制在2中的线上,将其拉伸到正确的比例(你需要一些基本的数学来解决这个问题)