图像质量在Java Graphics2D旋转中被破坏

时间:2012-06-22 15:41:15

标签: java image rotation graphics2d

我遇到使用Graphics2D旋转方法旋转图像的问题。

以下是我遇到的问题的图片:

enter image description here

当我移动球时,图像在旋转时会完全扭曲。

这是我的旋转方法:

public static void rotate(BufferedImage img, Rectangle rect, int degrees) { 
    Graphics2D g = (Graphics2D) img.createGraphics();
    g.rotate(degrees, rect.x + rect.width/2, rect.y + rect.height/2);
    g.drawImage(img, rect.x, rect.y, rect.width, rect.height, null);
    g.dispose();
}

我能做些什么来避免质量损失吗?

2 个答案:

答案 0 :(得分:2)

因此,当球移动时,您将图像旋转几度并用新图像覆盖原始图像?每次旋转图像时,都会添加一点点失真;经过多次旋转,失真更加复杂。

相反,只需将原始图像保留在内存中,并存储它在屏幕上显示的旋转度数。然后每次渲染时,将原始图像旋转当前的度数。

答案 1 :(得分:1)

我知道这是一个非常古老的问题但是对于想要做类似事情的人来说,请尝试在g.drawImage之前添加以下代码

g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

这应该有助于使图像看起来更好。

相关问题