保持尺寸时移动图像

时间:2013-05-06 15:14:35

标签: java image image-processing

我有一个图像,我想换一些x,y值,然后保存。我的问题是我想保留原始尺寸,以便在移动图像后留下x和y“空白”空间。

另外,有什么办法可以将“空白”空间设置为黑色吗?

示例:我将600x600图像向下移动45并向左移动30,这样图像仍然是600x600但结果有45个高度和30个宽度的“空白”空间。

到目前为止,我一直在使用getSubimage的{​​{1}}方法尝试解决这个问题,但我似乎无法回到原来的维度。

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:2)

您可以通过创建新的缓冲图像并绘制到它来实现。

// Create new buffered image
BufferedImage shifted = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// Create the graphics
Graphics2D g = shifted.createGraphics();
// Draw original with shifted coordinates
g.drawImage(original, shiftx, shifty, null);

希望这有效。

答案 1 :(得分:1)

public BufferedImage shiftImage(BufferedImage original, int x, int y) {
        BufferedImage result = new BufferedImage(original.getWidth() + x,
                original.getHeight() + y, original.getType());
        Graphics2D g2d = result.createGraphics();
        g2d.drawImage(original, x, y, null);
        return result;
    }

应该工作。

保存

 public void SaveImage(BufferedImage image, String filename) {
    File outputfile = new File(filename + ".png");
    try {
        ImageIO.write(image, "png", outputfile);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}