use*_*241 10 java graphics bufferedimage image rotation
我正在尝试旋转图像.我正在使用这个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"));
Run Code Online (Sandbox Code Playgroud)
但我看到奇怪的结果:
资源:

结果:
**结果图片:**http://s14.postimage.org/cjut935ip/image.jpg
你能帮帮我解决这个问题吗?
Dan*_* D. 14
切换图像的宽度和高度是不够的.您正在使用图像的中心作为旋转原点进行旋转.只需用一张纸尝试相同的操作,您就会看到它的工作方式相同.您还必须稍微移动纸张,这意味着应用转换来解决此问题.所以,在旋转调用之后立即执行以下操作:
graphics.translate((newImage.getWidth() - oldImage.getWidth()) / 2, (newImage.getHeight() - oldImage.getHeight()) / 2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16840 次 |
| 最近记录: |