我有一个图像。我需要对其进行精确复制并将其保存到 BufferedImage,但没有 Image.clone()。这个东西应该在一个计算循环中,所以它应该非常快,没有逐像素复制。执行此操作的最佳性能方法是什么?
问问题
10021 次
4 回答
7
您可以绘制到缓冲图像,因此制作一个空白bufferedImage,从中创建图形上下文,然后将原始图像绘制到它。
BufferedImage copyOfImage =
new BufferedImage(widthOfImage, heightOfImage, BufferedImage.TYPE_INT_RGB);
Graphics g = copyOfImage.createGraphics();
g.drawImage(originalImage, 0, 0, null);
于 2012-01-14T20:43:44.610 回答
1
还有另一种方法:
BufferedImage copyOfImage = image.getSubimage(0, 0, image.getWidth, image.getHeight);
于 2015-01-08T06:56:06.323 回答
0
Image clone = original.getScaledInstance(original.getWidth(), -1, Image.SCALE_DEFAULT);
这可能不是很漂亮,但getScaledInstance
顾名思义,它会返回原始Image
对象的一个实例。通常仅用于调整大小。-1
告诉方法保持纵横比不变
于 2015-03-18T21:03:51.697 回答
0
您可以创建一个方法来返回要克隆的图像的子图像。
如:
public static BufferedImage clone(BufferedImage img)
{
return img.getSubimage(img.getMinX(), img.getMinY(), img.getWidth(), img.getHeight());
}
于 2019-11-12T17:14:13.777 回答