如何克隆缓冲图像
2022-08-31 08:21:46
我有一个对象,其中有许多缓冲图像,我想创建一个新对象,将所有缓冲图像复制到新对象中,但这些新图像可能会被更改,我不希望通过更改新对象图像来更改原始对象图像。
清楚了吗?
这有可能做到吗,任何人都可以建议一个好方法来做到这一点吗?我想到了getSubImage,但在某处读到,对子图像的任何更改都会重新选择回父图像。
我只是希望能够获得BufferedImage的全新完全独立的副本或克隆
我有一个对象,其中有许多缓冲图像,我想创建一个新对象,将所有缓冲图像复制到新对象中,但这些新图像可能会被更改,我不希望通过更改新对象图像来更改原始对象图像。
清楚了吗?
这有可能做到吗,任何人都可以建议一个好方法来做到这一点吗?我想到了getSubImage,但在某处读到,对子图像的任何更改都会重新选择回父图像。
我只是希望能够获得BufferedImage的全新完全独立的副本或克隆
像这样的东西?
static BufferedImage deepCopy(BufferedImage bi) {
ColorModel cm = bi.getColorModel();
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
WritableRaster raster = bi.copyData(null);
return new BufferedImage(cm, raster, isAlphaPremultiplied, null);
}
我这样做:
public static BufferedImage copyImage(BufferedImage source){
BufferedImage b = new BufferedImage(source.getWidth(), source.getHeight(), source.getType());
Graphics g = b.getGraphics();
g.drawImage(source, 0, 0, null);
g.dispose();
return b;
}
它工作得相当不错,使用简单。