【发布时间】:2013-11-18 11:18:15
【问题描述】:
我将首先展示错误的示例,然后我将解释如何,最后我会提出我的问题。
这是我要旋转的图片。
我多次将其旋转 90 度和 270 度,然后将它们组合成一个大的缓冲图像。
我用来旋转单个 bufferedImage 的代码是这样的:
public static BufferedImage rotate(BufferedImage img, int angle) {
int w = img.getWidth();
int h = img.getHeight();
BufferedImage dimg = new BufferedImage(w, h, img.getType());
Graphics2D g = dimg.createGraphics();
g.rotate(Math.toRadians(angle), w/2, h/2);
g.drawImage(img, null, 0, 0);
return dimg;
}
旋转的结果看起来像这样。
之所以出现这些黑条,是因为在代码中您可以清楚地看到我创建了一个单独的缓冲图像,这将是最终图像。
它使用原始宽度和高度,因为图像旋转了高度和高度开关,所以我通过将 BufferedImage dimg = new BufferedImage(w, h, img.getType()); 更改为 BufferedImage dimg = new BufferedImage(h, w, img.getType()); 来弥补这一点。
我认为这将解决我的问题是合乎逻辑的。
但我错了,现在轮换的结果是这样的。
因此,从这一点开始,我不知道为什么要这样做。
我可能只是忽略了一件小事,或者这是一个常见错误,即使我找不到
任何发生这种情况的实例。
所以这是我的问题,为什么它会这样做?我该如何解决这个问题。
【问题讨论】:
-
你的图片不是正方形的;你需要决定如何解决这个问题。
-
我前一阵子修好了,不记得怎么弄的,所以没有答案。
标签: java swing lwjgl bufferedimage graphics2d