У меня возникла какая-то проблема. Когда я поворачиваю изображение, изображение обрезается по углам. Я использую следующий код для поворота изображения. Он вращается правильно, но становится срезанным во всех углах.Изображение разрезается по углам после поворота
public static Image rotate(BufferedImage img, double angle) {
int w = img.getWidth();
int h = img.getHeight();
BufferedImage result = new BufferedImage(w, h, img.getType());
Graphics2D g2 = result.createGraphics();
g2.setColor(Color.WHITE);
g2.fillRect(0, 0, w, h);
g2.rotate(Math.toRadians(angle), w/2, h/2);
g2.drawRenderedImage(img, null);
//g2.drawImage(img,null,0,0);
return result;
}
Мне нужно что-то, что не позволит разрезать углы. Пожалуйста помоги.
Но что вы хотите? Ожидаете ли вы, что конечный «Image» будет иметь тот же размер, что и исходный (чтобы уменьшалось повернутое изображение), или вы ожидаете, что нарисованное изображение будет иметь (более или менее) начальный размер как начальный (так что экземпляр «Image» должен быть больше начального)? –
Конечное изображение должно иметь тот же размер, что и исходный. Мое требование состоит в том, что изображение должно вращаться, но внешний вид должен быть одинаковым. Но в настоящее время изображение обрезается по углам. – harry
Во-первых, внешний вид не имеет к этому никакого отношения. Во-вторых, если изображение занимает все пространство на компоненте, равном 20 на 40, и вы поворачиваете изображение на 90 градусов, изображение будет на 40 на 20, которое слишком велико по ширине, и это будет уменьшено. Вы должны либо перемасштабировать изображение, либо убедиться, что вы нарисовали его на достаточно большом компоненте. – user1803551