3

我的项目:我正在从一个创建地图/地形,int[]输出是一个BufferedImage.

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

也就是说,我要转换这个:

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

变成这样的东西

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

我在看这个答案,听起来PerspectiveTransformJAI 可能会奏效。

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

4

2 回答 2

1

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

尤其是“透视过滤器”。

编辑:

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"));
}  

此代码将从以下转换图像:
原始图像

对此:
修改后的图像

于 2013-03-06T01:09:20.903 回答
0

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

于 2012-12-22T21:16:59.773 回答