关于x轴倾斜BufferedImage

时间:2012-07-13 18:43:17

标签: java image-processing bufferedimage jai

我的项目:我正在使用int[]创建地图/地形,输出为BufferedImage

问题:我想将BufferedImage向后倾斜(绕x轴)25度。

也就是说,我想转换它:

 _____
|     |
|     |
|     |
 -----

这样的事情

   ____
  /    \
 /      \
/        \
----------

我在看this answer,听起来像JAI的PerspectiveTransform可能会做到这一点。

问题:如何将PerspectiveTransform应用于BufferedImage?这是向后倾斜图像的正确方法吗?

2 个答案:

答案 0 :(得分:1)

查看JHLabs过滤器:
http://www.jhlabs.com/ip/filters/index.html

,特别是“PerspectiveFilter”。

编辑:

public void perspective() throws Exception{
    BufferedImage srcImage = ImageIO.read(new File("flower.jpg"));
    BufferedImage destImage = null;

    int w = srcImage.getWidth();
    int h = srcImage.getHeight();

    PerspectiveFilter perspectiveFilter = new PerspectiveFilter();
    perspectiveFilter.setCorners(w/4, 0, w-w/4, 0, w, h, 0, h);     
    destImage = perspectiveFilter.filter(srcImage, destImage);

    ImageIO.write(destImage,"jpg",new File("modified_flower.jpg"));
}  

此代码将转换图像:
original image

到此:
modified image

答案 1 :(得分:0)

我认为您需要Java3d,或者进行自己的计算。基本上,你有一个带纹理的平面的三维旋转。