我试图在三个新的BufferedImage中复制相同的BufferedImage内容,这是我的代码:
ColorModel cm = image.getColorModel();
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
WritableRaster raster = image.copyData(null);
BufferedImage[] images = {
new BufferedImage(cm, raster, isAlphaPremultiplied, null),
new BufferedImage(cm, raster, isAlphaPremultiplied, null),
new BufferedImage(cm, raster, isAlphaPremultiplied, null)
};
即使我以不同的方式编辑这些图像,结果也是一样的。我确定一切正常,因为如果我只有一个副本但不超过一个副本,代码就能正常工作。
我该如何管理这样的事情?
答案 0 :(得分:0)
我明白了。即使我的BufferedImages不同,ColorModel和WritableRaster也仅引用相同的对象。
如果有人遇到同样的问题,请尝试以下方法:
private BufferedImage copyImage() {
ColorModel cm = image.getColorModel();
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
WritableRaster raster = image.copyData(null);
return new BufferedImage(cm, raster, isAlphaPremultiplied, null);
}
public BufferedImage[] copyUpdatedImage() {
BufferedImage[] images = {
copyImage(),
copyImage(),
copyImage()
};
}