Java 如何克隆图像?

Java 如何克隆图像?,java,performance,image,clone,copying,Java,Performance,Image,Clone,Copying,我有一个形象。我需要制作它的精确副本并将其保存到BuffereImage,但没有Image.clone()。这个东西应该在一个计算循环中,所以它应该非常快,没有逐像素复制。执行此操作的最佳性能方法是什么 您可以绘制缓冲图像,因此创建一个空白的缓冲图像,从中创建图形上下文,并将原始图像绘制到其中 BufferedImage copyOfImage = new BufferedImage(widthOfImage, heightOfImage, BufferedImage.TYPE_INT_

我有一个形象。我需要制作它的精确副本并将其保存到BuffereImage,但没有Image.clone()。这个东西应该在一个计算循环中,所以它应该非常快,没有逐像素复制。执行此操作的最佳性能方法是什么

您可以绘制缓冲图像,因此创建一个空白的缓冲图像,从中创建图形上下文,并将原始图像绘制到其中

BufferedImage copyOfImage = 
   new BufferedImage(widthOfImage, heightOfImage, BufferedImage.TYPE_INT_RGB);
Graphics g = copyOfImage.createGraphics();
g.drawImage(originalImage, 0, 0, null);
还有另一种方法:

BufferedImage copyOfImage = image.getSubimage(0, 0, image.getWidth, image.getHeight);

Image clone=original.getScaledInstance(original.getWidth(),-1,Image.SCALE\u默认值)


这可能不是很漂亮,但正如名称所示,
getScaledInstance
返回原始
Image
对象的一个实例。通常仅用于调整大小
-1
告诉该方法保持纵横比不变

您可以创建一个方法,返回要克隆的图像的子图像

例如:

public static BufferedImage clone(BufferedImage img)
{
  return img.getSubimage(img.getMinX(), img.getMinY(), img.getWidth(), img.getHeight());
}

看看这个,它逐像素复制图像(只复制光栅数据)。有什么方法可以更快地完成吗?如果你想要一个深度拷贝,我知道没有其他方法。为什么每次循环迭代都要克隆它?实际上我需要复制很多旋转1度的图像,所以我需要复制基本图像并对其执行一些操作。这样会失去透明度。如果有疑问,请使用
键入\u INT\u ARGB
.Hm。。。这对我来说看起来更快。使用后请始终记住
dispose()
Graphics
对象!你能不能请你的答案解释一下为什么这个代码回答了这个问题?仅代码的答案是,因为它们不会教授解决方案。不,这不起作用,因为copyOfImageimage将共享备份缓冲区(它将是浅拷贝)。对其中一个所做的编辑将反映在另一个中。