**********************************************************************
실시간으로 프로그램상에서 이미지를 그린후 binary화 시켜 웹 서비스나, gif 파일로 저장 할 수 있다.
Article 내용:
웹에서 흔히 볼 수 있는 실시간 이미지 처리, 또는 프로그램에서 그려진 이미지를 파일로 저장하는 방법에
대해서 다룰것이다. 증권 사이트의 실시간 주가 그래프는 어떻게 보여줄까?
그에 대한 방법을 소개 하고자 한다.
참고) 여기에서 사용하는 GIFEncoder는 "Copyright (C)1996,1998 by Jef Poskanzer "에
지적 소유권이 있음을 알려준다.
* BufferedImage 소개
jdk1.* 버젼에서는 메모리상에 이미지를 직접 그리지 못하여 awt package를 이용하여 Frame,Window,Applet을
사용하여 이미지를 그렸으며, 그 이미지를 이용하여 여러가지 서비스를 할 수 있었다.
그러나, 웹 서비스 시대가 도래하면서 서버측에서도 실시간 이미지 전송을 요구받게 되었지만,
그러한 awt package를 이용해야 이미지 처리가 가능하므로 어려움을 겪어왔다.
현재는 jdk1.2 버젼 이상 부터 제공하는 BufferedImage 클래스를 이용하여 메모리 상에 이미지 구현을
마음껏 한후에 그 이미지를 GIFEncoder를 통하여 서버에서의 실시간 이미지 처리를 할 수 있게 되었다.
BufferedImage 클래스는 java.awt.image package에 있지만 jdk1.7 버젼에서와 같이 Frame,Window,Applet없이도
메모리 상에 존재하는 이미지 클래스이다.
BufferedImage의 자세한 사용은 API를 참고하기로 하고 간단한 사용 방법을 소개한다.
//BufferedImage bi=new BufferedImage(int width, int height, int imageType);
위와 같은 방법으로 객체생성을 할 수 는데.....
width,height는 메모리상의 가상 이미지 크기이다.
imageType은 여러가지 color를 제공하는 ImageType으로 보통 BufferedImage.TYPE_4BYTE_ABGR 을 사용한다.
//BufferedImage bi=new BufferedImage(200, 300, BufferedImage.TYPE_4BYTE_ABGR);
실제 위와 같이 객체생성한다. 그러면 가로 200, 세로 300 크기의 이미지가 메모리상에 만들어진다.
그 다음은 간단하다.
BufferedImage에서 Graphics 객체를 얻어 올 수 있으므로 여러가지 그림을 그릴 수가 있다.
2D구현도 가능하다.
BufferedImage bi=new BufferedImage(200, 300, BufferedImage.TYPE_4BYTE_ABGR);
Graphics g=bi.getGraphics() ;
g.setColor(Color.black);
g.drawLine(50,50,50,300);
g.drawLine(50,300,300,300);
g.drawString(" speed ( km / hour )",100,320);
g.drawRect(50,50,50,50);
g.fillRect(100,100,50,50);
위와 같이 메모리 상에 간단한 그래프를 그릴 수 있다.
이제 실시간으로 그린 이미지를 파일로 저장하거나, 아니면 stream으로 서버에서 클라이언트로
전송할 수 있는데.. 문제는 현재의 이미지는 .gif .jpg형식의 binary가 아니라는 것이다.
BufferedImage의 내용을 사용가능한 binary로 변환시켜주는 것이 GIFEncoder,JPGEncoder라는 것이다.
이것은 공개용으로 아래 싸이트에서 자바 클래스로 제공하고 있다.
다운 받아 사용해 보기 바란다.
GIFEncoder
* GIFEncoder 사용법
GIFEncoder사용법은 간단하다.
//GifEncoder ge=new GifEncoder(Image img,OutputStream out);
위와 같이 객체생성하므로 이미지와 encode한 binary를 보내줄 OutputStream만 있으면 된다.
1. 파일로 저장
FileOutputStream fout=new FileOutputStream("my.gif");
GifEncoder ge=new GifEncoder(bi,fout);// bi는 BufferedImage
ge.encode();
fout.close();
2. 서블릿에서 browser로 전송
response.setContentType("image/gif");
ServletOutputStream out=response.getOutputStream();
GifEncoder ge=new GifEncoder(bi,oout);// bi는 BufferedImage
ge.encode();
out.close();
Article 정리:
BufferedImage, GIFEncoder를 사용하는 방법을 알아 보았는데...
인테넷에서는 이러한 방법을 사용하여 다양한 서비스를 제공할 수 있다. 지금 막 아이디어들이 떠오르지 않는가?
참고로 JPGEncoder도 같은 방법으로 사용할 수 있으니 JPGEncoder만 구할 수 있으면 되겠다.
실시간으로 프로그램상에서 이미지를 그린후 binary화 시켜 웹 서비스나, gif 파일로 저장 할 수 있다.
Article 내용:
웹에서 흔히 볼 수 있는 실시간 이미지 처리, 또는 프로그램에서 그려진 이미지를 파일로 저장하는 방법에
대해서 다룰것이다. 증권 사이트의 실시간 주가 그래프는 어떻게 보여줄까?
그에 대한 방법을 소개 하고자 한다.
참고) 여기에서 사용하는 GIFEncoder는 "Copyright (C)1996,1998 by Jef Poskanzer "에
지적 소유권이 있음을 알려준다.
* BufferedImage 소개
jdk1.* 버젼에서는 메모리상에 이미지를 직접 그리지 못하여 awt package를 이용하여 Frame,Window,Applet을
사용하여 이미지를 그렸으며, 그 이미지를 이용하여 여러가지 서비스를 할 수 있었다.
그러나, 웹 서비스 시대가 도래하면서 서버측에서도 실시간 이미지 전송을 요구받게 되었지만,
그러한 awt package를 이용해야 이미지 처리가 가능하므로 어려움을 겪어왔다.
현재는 jdk1.2 버젼 이상 부터 제공하는 BufferedImage 클래스를 이용하여 메모리 상에 이미지 구현을
마음껏 한후에 그 이미지를 GIFEncoder를 통하여 서버에서의 실시간 이미지 처리를 할 수 있게 되었다.
BufferedImage 클래스는 java.awt.image package에 있지만 jdk1.7 버젼에서와 같이 Frame,Window,Applet없이도
메모리 상에 존재하는 이미지 클래스이다.
BufferedImage의 자세한 사용은 API를 참고하기로 하고 간단한 사용 방법을 소개한다.
//BufferedImage bi=new BufferedImage(int width, int height, int imageType);
위와 같은 방법으로 객체생성을 할 수 는데.....
width,height는 메모리상의 가상 이미지 크기이다.
imageType은 여러가지 color를 제공하는 ImageType으로 보통 BufferedImage.TYPE_4BYTE_ABGR 을 사용한다.
//BufferedImage bi=new BufferedImage(200, 300, BufferedImage.TYPE_4BYTE_ABGR);
실제 위와 같이 객체생성한다. 그러면 가로 200, 세로 300 크기의 이미지가 메모리상에 만들어진다.
그 다음은 간단하다.
BufferedImage에서 Graphics 객체를 얻어 올 수 있으므로 여러가지 그림을 그릴 수가 있다.
2D구현도 가능하다.
BufferedImage bi=new BufferedImage(200, 300, BufferedImage.TYPE_4BYTE_ABGR);
Graphics g=bi.getGraphics() ;
g.setColor(Color.black);
g.drawLine(50,50,50,300);
g.drawLine(50,300,300,300);
g.drawString(" speed ( km / hour )",100,320);
g.drawRect(50,50,50,50);
g.fillRect(100,100,50,50);
위와 같이 메모리 상에 간단한 그래프를 그릴 수 있다.
이제 실시간으로 그린 이미지를 파일로 저장하거나, 아니면 stream으로 서버에서 클라이언트로
전송할 수 있는데.. 문제는 현재의 이미지는 .gif .jpg형식의 binary가 아니라는 것이다.
BufferedImage의 내용을 사용가능한 binary로 변환시켜주는 것이 GIFEncoder,JPGEncoder라는 것이다.
이것은 공개용으로 아래 싸이트에서 자바 클래스로 제공하고 있다.
다운 받아 사용해 보기 바란다.
GIFEncoder
* GIFEncoder 사용법
GIFEncoder사용법은 간단하다.
//GifEncoder ge=new GifEncoder(Image img,OutputStream out);
위와 같이 객체생성하므로 이미지와 encode한 binary를 보내줄 OutputStream만 있으면 된다.
1. 파일로 저장
FileOutputStream fout=new FileOutputStream("my.gif");
GifEncoder ge=new GifEncoder(bi,fout);// bi는 BufferedImage
ge.encode();
fout.close();
2. 서블릿에서 browser로 전송
response.setContentType("image/gif");
ServletOutputStream out=response.getOutputStream();
GifEncoder ge=new GifEncoder(bi,oout);// bi는 BufferedImage
ge.encode();
out.close();
Article 정리:
BufferedImage, GIFEncoder를 사용하는 방법을 알아 보았는데...
인테넷에서는 이러한 방법을 사용하여 다양한 서비스를 제공할 수 있다. 지금 막 아이디어들이 떠오르지 않는가?
참고로 JPGEncoder도 같은 방법으로 사용할 수 있으니 JPGEncoder만 구할 수 있으면 되겠다.
[출처] GIF-그림저장하기|작성자 바보고양이
'Java' 카테고리의 다른 글
[Java] String과 StringBuffer의 속도 차이 (0) | 2010.05.26 |
---|---|
[Java] getMetaData by table (0) | 2010.01.25 |
[Java] 원격디버깅 (0) | 2009.11.25 |
[Java] 싱클톤 패턴 (0) | 2009.10.22 |
[Java] Java관련 무료동영상 강의 (0) | 2009.09.23 |