[java] 어떻게 BufferedImage를 복제합니까?



Answers

나는 이것을한다:

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;
}

그것은 꽤 잘 작동하며 사용하기 쉽습니다.

Question

나는 많은 버퍼 이미지가있는 객체를 가지고 있는데, 새로운 객체를 생성하기를 원한다. 그러나 새로운 이미지는 변경 될 수 있으며, 원래의 객체 이미지가 새로운 개체 이미지.

그게 확실한가요?

이것이 가능한가요 누구든지 제발 할 수있는 좋은 방법을 제안 할 수 있습니까? 나는 getSubImage에 대해 생각해 보았지만 어딘가에서 하위 이미지에 대한 변경 사항이 부모 이미지로 되돌려 지도록 읽었습니다.

난 그냥 완전히 별도의 복사본이나 BufferedImage의 복제본을 얻을 수 있기를 원한다.




또 다른 방법은 Graphics2D 클래스를 사용하여 새 빈 이미지 위에 이미지를 그립니다. 이것은 실제로 이미지를 복제하지는 않지만, 생성되는 이미지의 사본을 생성합니다.

public static final BufferedImage clone(BufferedImage image) {
    BufferedImage clone = new BufferedImage(image.getWidth(),
            image.getHeight(), image.getType());
    Graphics2D g2d = clone.createGraphics();
    g2d.drawImage(image, 0, 0, null);
    g2d.dispose();
    return clone;
}



BufferedImage 클래스는 Cloneable 인터페이스를 구현하지 않습니다. 따라서 복제 메소드가 오버라이드되지 않습니다. 깊은 복사 기술의 대안은 다음과 같습니다. Java 팁 76 : 딥 복사 기술의 대안




Related