我有一个图像,我想换一些x,y值,然后保存。我的问题是我想保留原始尺寸,以便在移动图像后留下x和y“空白”空间。
另外,有什么办法可以将“空白”空间设置为黑色吗?
示例:我将600x600图像向下移动45并向左移动30,这样图像仍然是600x600但结果有45个高度和30个宽度的“空白”空间。
到目前为止,我一直在使用getSubimage
的{{1}}方法尝试解决这个问题,但我似乎无法回到原来的维度。
关于如何解决这个问题的任何想法?
答案 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();
}
}