我想旋转图像。 我使用这个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
能否请您帮我解决这个问题?
这是不够的切换的图像的宽度和高度。 您正在使用图像旋转的起源中心旋转。 只是尝试用相同的一张纸,你会看到它的工作方式相同。 您还必须移动纸张一点点,这意味着应用转换来解决这个问题。 因此,旋转通话后立即这样做:
graphics.translate((newImage.getWidth() - oldImage.getWidth()) / 2, (newImage.getHeight() - oldImage.getHeight()) / 2);
新的图像具有由于旋转的大小不同。 尝试:BufferedImage的newImage =新的BufferedImage(oldImage.getWidth(),oldImage.getHeight(),oldImage.getType());
试着在你做你的绘图板的界限越来越
Rectangle rect = this.getBounds();
然后执行:
graphics.rotate(Math.toRadians(90), (rect.width - newImage.getWidth()) / 2, (rect.height - newImage.getHeight()) / 2);
希望可以帮助干杯!
你可以这样写这将是工作。
BufferedImage newImage = new BufferedImage(oldImage.getWidth(), oldImage.getHeight(), oldImage.getType());
我认为这个地方width
和height
是错误的代码。