爪哇 - 图像旋转(Java - Image Rotation)

2019-06-27 12:14发布

我想旋转图像。 我使用这个Java代码:

BufferedImage oldImage = ImageIO.read(new FileInputStream("C:\\workspace\\test\\src\\10.JPG"));
BufferedImage newImage = new BufferedImage(oldImage.getHeight(), oldImage.getWidth(), oldImage.getType());
Graphics2D graphics = (Graphics2D) newImage.getGraphics();
graphics.rotate(Math.toRadians(90), newImage.getWidth() / 2, newImage.getHeight() / 2);
graphics.drawImage(oldImage, 0, 0, oldImage.getWidth(), oldImage.getHeight(), null);
ImageIO.write(newImage, "JPG", new FileOutputStream("C:\\workspace\\test\\src\\10_.JPG"));

但我看到奇怪的结果:

资源:

结果:

**结果图像:** http://s14.postimage.org/cjut935ip/image.jpg

能否请您帮我解决这个问题?

Answer 1:

这是不够的切换的图像的宽度和高度。 您正在使用图像旋转的起源中心旋转。 只是尝试用相同的一张纸,你会看到它的工作方式相同。 您还必须移动纸张一点点,这意味着应用转换来解决这个问题。 因此,旋转通话后立即这样做:

  graphics.translate((newImage.getWidth() - oldImage.getWidth()) / 2, (newImage.getHeight() - oldImage.getHeight()) / 2);


Answer 2:

新的图像具有由于旋转的大小不同。 尝试:BufferedImage的newImage =新的BufferedImage(oldImage.getWidth(),oldImage.getHeight(),oldImage.getType());



Answer 3:

试着在你做你的绘图板的界限越来越

Rectangle rect = this.getBounds();

然后执行:

graphics.rotate(Math.toRadians(90), (rect.width - newImage.getWidth()) / 2, (rect.height - newImage.getHeight()) / 2);

希望可以帮助干杯!



Answer 4:

你可以这样写这将是工作。

BufferedImage newImage = new BufferedImage(oldImage.getWidth(), oldImage.getHeight(), oldImage.getType());

我认为这个地方widthheight是错误的代码。



文章来源: Java - Image Rotation