JAVA:复制不仅仅是一个新的bufferedimage

时间:2018-02-14 14:26:11

标签: java copy clone bufferedimage

我试图在三个新的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)
    };

即使我以不同的方式编辑这些图像,结果也是一样的。我确定一切正常,因为如果我只有一个副本但不超过一个副本,代码就能正常工作。

我该如何管理这样的事情?

1 个答案:

答案 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()
        };
    }