我的项目:我正在使用int[]
创建地图/地形,输出为BufferedImage
。
问题:我想将BufferedImage
向后倾斜(绕x轴)25度。
也就是说,我想转换它:
_____
| |
| |
| |
-----
这样的事情
____
/ \
/ \
/ \
----------
我在看this answer,听起来像JAI的PerspectiveTransform
可能会做到这一点。
问题:如何将PerspectiveTransform
应用于BufferedImage
?这是向后倾斜图像的正确方法吗?
答案 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"));
}
此代码将转换图像:
到此:
答案 1 :(得分:0)
我认为您需要Java3d,或者进行自己的计算。基本上,你有一个带纹理的平面的三维旋转。