Есть ли способ сгибать BufferedImage
в Java?Как согнуть изображение в 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 градусов. Как бы это выглядело, если вы «согнули» прямоугольную сетку? –