How to clone Image?

北慕城南 提交于 2019-11-30 04:30:26

问题


I have an Image. I need to make a exactly copy of it and save it to BufferedImage, but there is no Image.clone(). The thing should be inside a calculating loop and so it should be really fast, no pixel-by-pixel copying. What's the best in perfomance method to do this?


回答1:


You can draw to a buffered image, so make a blank bufferedImage, create a graphics context from it, and draw your original image to it.

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



回答2:


There is another way:

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



回答3:


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

This might not be very pretty, but getScaledInstance returns, as the name suggests, an instance of your original Image object. Usually only used for resizing. -1 tells the method to keep the aspect ratio as it is




回答4:


You can create a method that returns the subimage of the image you want to clone.

Such as:

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


来源:https://stackoverflow.com/questions/8864275/how-to-clone-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!