调整Java Swing大小后,图像变黑

时间:2014-04-19 03:39:09

标签: java image swing resize bufferedimage

好的,所以我正在设计一个与迷宫相关的游戏,我正在处理GUI。

考虑到它将是NxN尺寸,我必须根据屏幕尺寸调整图像的大小(迷宫的内容),因此无论迷宫大小如何,它都将保持不变。

我使用了这段代码:

public static BufferedImage resizeImage(Image image, int width, int height) {
       BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
       return bufferedImage;
    }

但是有一个问题。新的已调整大小的图像现在是黑色(完全黑色),即使它已正确调整大小(尺寸方面)。

我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

以下是如何添加代码以在您创建的新位图上绘制图像的缩放版本:

public static BufferedImage resizeImage(Image image, int width, int height) {
    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = bufferedImage.createGraphics();

    // Increase quality if needed at the expense of speed
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

    AffineTransform scaleTransform = AffineTransform.getScaleInstance(
            width / (double) image.getWidth(null), height / (double) image.getHeight(null));
    g.drawImage(image, scaleTransform, null);

    // Release resources
    g.dispose();

    return bufferedImage;
}