如何克隆图像?

问题描述 投票:8回答:4

我有一张图片。我需要对其进行完全复制并将其保存到BufferedImage,但是没有Image.clone()。事物应该在计算循环内,因此它应该非常快,没有逐像素复制。最佳性能方法是什么?

java performance image clone copying
4个回答
7
投票

您可以绘制到缓冲的图像,因此制作一个空白的bufferedImage,从中创建一个图形上下文,然后向其绘制原始图像。

BufferedImage copyOfImage = 
   new BufferedImage(widthOfImage, heightOfImage, BufferedImage.TYPE_INT_RGB);
Graphics g = copyOfImage.createGraphics();
g.drawImage(originalImage, 0, 0, null);

1
投票

还有另一种方法:

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

0
投票

Image clone = original.getScaledInstance(original.getWidth(), -1, Image.SCALE_DEFAULT);

这可能不是很漂亮,但是getScaledInstance顾名思义会返回原始Image对象的实例。通常仅用于调整大小。 -1告诉该方法保持原样的宽高比]


0
投票

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

例如:

public static BufferedImage clone(BufferedImage img)
{
  return img.getSubimage(img.getMinX(), img.getMinY(), img.getWidth(), img.getHeight());
}
© www.soinside.com 2019 - 2024. All rights reserved.