java-programming

Java JPanel을 이용한 이미지 출력 - Genome Browser 만들기 2

hongiiv 2008. 2. 14. 11:12
반응형
real

이제 해야 할 일은 이미지를 만드는 작업이다. 지금 만들 Genome Browser의 경우 위의 그림처럼 3개의 부분으로 나누어 생각해 볼 수 있다. 2번 부분은 chromosome의 위치를 보여주는 눈금자가 위치할 부분이고 이 눈금자(2번, Scale)를 기준으로 윗부분(1번, Sense)과 아랫부분(3번, Antisense)에 실제 유용한 정보들(SNP정보 등등)이 보여지게 된다.

여기에서는 Java를 이용하여 그림파일을 생성할 것이다. Java에서 이미지를 생성하고 이를 파일로 얻는 방법은 다음과 같다.

1. BufferedImage를 생성한다.
2. 위의 생성된 버퍼로 부터 Graphics 객체를 얻는다.
3. Graphics 객체에다가 마구 마구 그린다. drawLine(), fillRect() 등등 ^^
4. ImageIO.write()를 이용하여 버퍼에 들어 있는 내용을 그림 파일로 출력한다.

===============예제 코드 시작 ===============
int width = 256;
int height = 256;
//이미지 버퍼를 생성한다.
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//버퍼로 부터 그래픽 객체를 얻는다.
Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
//그래픽 객체를 흰색으로 채운다.
g.setPaint(Color.white);
g.fillRect(0, 0, 256, 256);

try {
           //버퍼 이미지를 파일로 출력한다.
            File outFile = new File("c:\\tiles\\test.jpg");
            ImageIO.write(bufferedImage, "jpg", outFile);
} catch (Exception e) {
            System.out.println(e.getMessage());
}

===============예제 코드 끝===============

위의 방법은 그냥 무턱대고 Graphics 객체에 그림을 그리는 방법인데, 위에서 말한 세부분에 대해서 정확하고 이쁜^^ 그림을 그리기 위해 조금 다른 방법을 사용한다.

1. JPanel을 3개 만든다. (Sense Panel, Scale Panel, Antisense Panel) 그리고 이 JPanel들이 올려질 커다란 Base Panel까지 총 4개의 JPanel을 생성한다.
2. 각각의 패널을 정보로 꽉 채운다.
3. JPanel(Base Panel)을 이미지 버퍼에 넣고 출력해 버린다.

이렇게 하면 JPanel에 있는 모습이 그대로 이미지를 만들 수가 있다. 따라서 좀더 다양하고 유연하게 정보들(SNP정보등등)을 표현할 수가 있다. 왜냐면 JPanel 자체를 그림파일로 출력해 버리니깐...(^  ^)/ 그럼 다시 작업 시작하러 이만... 요즘 이거 때문에 블로그에 글도 못쓰고,,, 그냥 지금까지 작업한 내용을 작업일지 형식으로....ㅎㅎㅎ

basepanel

출력된 Panel의 이미지는 다음과 같다.

test

반응형