有没有什么办法可以在Java中弯曲BufferedImage
?如何在java中弯曲图像
我认为,如果我将图像裁剪成更小的部分并旋转它们,那么我会基本上弯曲图像,但它似乎不起作用。
这里是我创建的方法:
/**
* This is a recursive method that will accept an image the point where the bending will start and the point where the bending will end, as well as the angle of bending
*
* @param original:the original image
* @param startingPoint: the point where the bending should start
* @param endingPoint: the point where the bending should end
* @param radiands: the angle
* @return the bent image
*/
public static BufferedImage getBentImage(BufferedImage original, int startingPoint, int endingPoint, double radians) {
if (startingPoint >= endingPoint)
return original;
int type = BufferedImage.TYPE_INT_ARGB;
int width = original.getWidth();
int height = original.getHeight();
BufferedImage crop = original.getSubimage(0, 0, startingPoint, height);
BufferedImage crop0 = original.getSubimage(startingPoint, 0, width - startingPoint, height);
BufferedImage bendCrop = new BufferedImage(width, height, type);
BufferedImage image = new BufferedImage(width, height, type);
AffineTransform rotation = new AffineTransform();
rotation.translate(0, 0);
rotation.rotate(radians);
Graphics2D g = bendCrop.createGraphics();
g.drawImage(crop0, rotation, null);
g.dispose();
g = image.createGraphics();
g.drawImage(crop, 0, 0, null);
g.drawImage(bendCrop, startingPoint, 0, null);
g.dispose();
return getBentImage(image, startingPoint + 1, endingPoint, radians);
}
这是原始图像:
这是该getBentImage(image, 200, 220, Math.toRadians(1))
的结果:
我期待的东西更接近:
任何想法如何真正实现一个getBentImage()
方法?
目前还不清楚你实际上“弯曲”的含义。请提供您正在尝试应用的转换的准确定义。 –
@AndyTurner难道他们下面的图片就解释了吗? –
不,这就是我问的原因。变形的参数是什么?起点,终点和弧度参数意味着什么?例如,你传入1弧度作为参数,但没有任何东西旋转57度。如果你“弯曲”一个矩形网格,它会是什么样子? –