JAVA:复制多个新的BuffereImage

JAVA:复制多个新的BuffereImage,java,copy,clone,bufferedimage,Java,Copy,Clone,Bufferedimage,我试图在三个新的BuffereImage中复制相同的BuffereImage内容,这是我的代码: ColorModel cm = image.getColorModel(); boolean isAlphaPremultiplied = cm.isAlphaPremultiplied(); WritableRaster raster = image.copyData(null); BufferedImage[] images = { new Buf

我试图在三个新的BuffereImage中复制相同的BuffereImage内容,这是我的代码:

    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)
    };
即使我以不同的方式编辑这些图像,结果也是一样的。我确信这一切都没问题,因为如果我只有一个副本,而不是多个副本,代码就可以正常工作


我怎么能处理这样的事情呢?

我知道了。即使BuffereImage不同,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()
        };
    }

有一些共享的内存-你如何管理什么??我看不到太多的代码,所以没有答案我不能发布数百行代码。不需要更多的代码。我自己找到了解决方案,谢谢。可能重复:关于copyImage方法,有更快的解决方案: