Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java image transformation

I need to create 3d depth effect for my image. Number 1 is what I have and number 2 is shape where I want to transform number 1. So is there any method for that in Java standard graphics libraries or some other open source libraries?

alt text

like image 908
newbie Avatar asked Jul 08 '10 09:07

newbie


1 Answers

This can not be done using the AffineTransform class. See Wikipedia article on affine transformation:

In general, an affine transformation is composed of linear transformations (rotation, scaling or shear) and a translation (or "shift").

What you need is some form of perspective transform. From http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/PerspectiveTransform.html

A perspective transformation is capable of mapping an arbitrary quadrilateral into another arbitrary quadrilateral, while preserving the straightness of lines. Unlike an affine transformation, the parallelism of lines in the source is not necessarily preserved in the output.

From http://answers.google.com/answers/threadview/id/515829.html

The Java Advanced Imaging API allows you to easily perform perspective transform.

As in Java2D and Java3D, these routines are optimised, they are not run in the usual java interpreted manner - so they are very fast as well.

The JAI is downloadable from

http://java.sun.com/products/java-media/jai/downloads/download-1_1_2.html

You can find info on how to run perspective transform in:

http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/

like image 95
aioobe Avatar answered Sep 29 '22 06:09

aioobe