동적 이미지(실시간 그래프) 생성하기

31395 
Created at 2006-12-22 12:21:09 
322   0   0   0  

http://www.acme.com/java/software/Acme.JPM.Encoders.GifEncoder.html
에서 다운받은 Acme.tar.gz을 알집이나 윈집을 이용해서 압축을 풉니다.
필요한 파일이, Acme 라는 디렉토리 안에 JPM 디렉토리가 있고
그 안에는 Encoders 라는 디렉토리가 있고 그 안에는 class 파일이 두개 있습니다.
Acme 디렉토리를 WEB-INFclasses 아래로 이동합니다.
어딘지 아시죠? 아니면 제가 첨부한
Acme.jar 파일을 c:jdk1.3jrelibext 에 복사시켜 놓아도 됩니다.
 

이제 설치는 끝났습니다. 소스를 보죠.
imageCall.html
<html>
<body bgcolor="#000000">
<img src="HelloGraphics.jsp">
</body>
</html>

HelloGraphics.jsp
<%@ page import="java.io.*, java.awt.*, Acme.JPM.Encoders.GifEncoder"
%><%

 &nbsr;  Frame frame = null;
    Graphics g = null;

    try {
      // Create an unshown frame
      frame = new Frame();
      frame.addNotify();

      // Get a graphics region, using the Frame
      Image image = frame.createImage(200, 300); // image size width 200, height 300
      g = image.getGraphics();

g.setFont(new Font("Serif", Font.ITALIC, 50));
g.drawString("JSP", 10, 50);
g.drawString("Image!", 10, 80);
g.setColor(new Color(0x0080AA));
g.setFont(new Font("Garamond", Font.PLAIN, 18));
g.drawString("www.okjsp.pe.kr", 60, 280);

      // Encode the off screen image into a GIF and send it to the client
      response.setContentType("image/gif");
      GifEncoder encoder = new GifEncoder(image, response.getOutputStream());
      encoder.encode();
    }
    finally {
      // Clean up resources
      if (g != null) g.dispose();
      if (frame != null) frame.removeNotify();
    }
%>


 

HelloGraphics.jsp 파일은 text/html 을 생성해 내는 것이 아니라,
image/gif 형식의 파일을 생성해 냅니다.
그래서 img src="HelloGraphics.jsp" 처럼 호출할 수 있는 것이죠.
 
여기에 관해서 관련자료들을 더 찾아보시기 바랍니다.
jpeg 생성하는 라이브러리도 있고, 다양하게 응용할 수 있겠죠.
요즘 유행하는 avatar 도 만들 수 있겠죠.
 

마지막으로 막대그래프 하나 그리고 끝내도록 하겠습니다. 원리는 이렇습니다.
숫자들을 배열에 놓고 맥시멈 값을 구합니다.
이미지 크기에 맞춰서 비율을 결정합니다.
배열의 length 로 이미지 폭을 나눕니다. 그리고 그려주면 됩니다.
난수를 10 개 만들어서 동적으로 이미지를 생성해보도록 하겠습니다.
 


HelloGraphics.jsp
<%@ page import="java.util.*, java.io.*, java.awt.*, Acme.JPM.Encoders.GifEncoder"
%><%

// 계산
// 난수 발생
 double [] num = new double[10];
 for(int i=0;i<num.length; i++) {
  num[i] = Math.random() * 100;
 }
// 최대값
 double max=num[0] ;
 for(int i=1;i<num.length;i++) {
  if(max<num[i])
   max=num[i];
 }
 
 int margin = 10;
 float x_pace = (300-margin*2) / (float)10;
 float y_height = (float)(200-margin*2);
 double ratio = y_height / max;


    Frame frame = null;
    Graphics g = null;

    try {
      // Create an unshown frame
      frame = new Frame();
      frame.addNotify();

      // Get a graphics region, using the Frame
      Image image = frame.createImage(300, 200); // image size width 300, height 200
      g = image.getGraphics();

g.setColor(new Color(0x0040FF));
g.setFont(new Font("System", Font.PLAIN, 11));
g.drawString("www.okjsp.pe.kr", 210, 198);
g.drawString("Max:"+max, 10, 198);

// draw Bars
int xx = 0;
int yy = 0;

g.setColor(new Color(0x000000));
g.drawRect(0,0,299,199);
for (int i=0; i<num.length; i++) {
 xx = (int)(i * x_pace) + margin;
 yy = (int)(num[i] * ratio);
 yy = 200 - (yy + margin);
 
 g.drawRect(xx, yy, (int)x_pace-3, 188 - yy);
 g.drawString(""+(int)num[i], xx+9, yy);
}

      // Encode the off screen image into a GIF and send it to the client
      response.setContentType("image/gif");
      GifEncoder encoder = new GifEncoder(image, response.getOutputStream());
      encoder.encode();
    }
    finally {
      // Clean up resources
      if (g != null) g.dispose();
      if (frame != null) frame.removeNotify();
    }
%>

 
서블릿으로 개발하는 것과 크게 차이는 없습니다만 서블릿 소스보다는 부담이 덜 가네요.
아직 내공이 얕기 때문이겠죠.
읽어주셔서 감사합니다. 좋은 하루 되십시오.

---------------------------------
http://okjsp.pe.kr



Tags: awt image 이미지 Share on Facebook Share on X

◀ PREVIOUS
UTF-8로 파일 저장하기
▶ NEXT
오라클8i 글자수 무제한 게시판소스
  댓글 0
로그인을 하시면 댓글을 등록 할 수 있습니다.
SIMILAR POSTS

이미지를 서치라이트로 비추는 효과 (created at 2007-01-28)

랜덤 이미지 로딩시키기 (created at 2007-01-28)

이미지의 다운로드를 막아주는 스크립트 (created at 2007-01-28)

큰 이미지를 화면크기에 맞게 자동으로 사이즈 조절 (created at 2007-01-28)

스크롤바에 붙어다니는 이미지 (created at 2007-01-28)

이미지가 많아서 로딩할때 시간이 많이걸릴 경우 (created at 2007-01-28)

이미지를 지정된 비율로 자르기 (crop) (created at 2006-10-10)

여자들이 사진 찍을때 입을 가리는 이유 (created at 2008-01-29)

문근영이 나이가 들수록 인기가 점점 하락하는 현상을 보이는데 왜 그런거죠? (created at 2008-10-15)

여자가 보는 남성의 이미지는 외국이라고 다르지 않습니다 (created at 2011-07-11)

탤런트 수애의 코믹한 사진 (created at 2013-03-04)

OTHER POSTS IN THE SAME CATEGORY

자바스크립트로 만든 빙고 게임 (created at 2006-12-22)

현재달의 첫째날 , 마지막날 (날짜,일자) 구하기 (created at 2006-12-22)

JPG 저장된 DB 이미지 JSP로 보여주기 (created at 2006-12-22)

스크립트 디버거 (created at 2006-12-22)

수많은 체크박스 중 몇개 체크했는지 확인 (created at 2006-12-22)

가상디스크 만들기 (created at 2006-12-22)

RSS 수집당하는 법 (created at 2006-12-22)

프린팅 하기(IE 전용) (created at 2006-12-22)

textbox의 입력문자 제어하기(영문/한글) (created at 2006-12-22)

폼메일 예제 (created at 2006-12-22)

include 집중해부 (created at 2006-12-22)

한글 처리 (created at 2006-12-22)

브라우져 캐시(cache) 안먹게 하는 비기 (created at 2006-12-22)

csv 파일을 이용한 메일링 리스트 구현 (created at 2006-12-22)

오라클8i 글자수 무제한 게시판소스 (created at 2006-12-22)

UTF-8로 파일 저장하기 (created at 2006-12-22)

발신전용 메일서버 만드는 방법 (created at 2006-12-21)

구글 검색시 순위 올리기 (created at 2006-12-18)

사이트 트래픽의 주범 웹봇 차단하기 - robots.txt (created at 2006-12-18)

Internet Explorer의 검색창에서 한글 입력이 안될때 (created at 2006-11-24)

프린터 인쇄 취소가 안될때 (created at 2006-11-24)

spoolsv.exe의 문제 cpu점유률 100% (created at 2006-11-24)

http-2.2.3에서 ssl 설치 (created at 2006-11-24)

초간단 php-oracle 연동 클래스 (created at 2006-11-24)

금액을 입력할때 세자리마다 컴마찍기 (created at 2006-11-24)

쿠키 세팅하기 (created at 2006-11-22)

초간단 AJAX 샘플 (created at 2006-11-22)

Hello World 뿌리기 (created at 2006-11-18)

텍스트 인쇄하기 (created at 2006-11-17)

Region을 이용한 부정형 윈도 만들기 (created at 2006-11-16)

UPDATES

소녀대 - Bye Bye Girl (updated at 2024-04-13)

대한민국 날씨 근황 (created at 2024-04-13)

성일종 인재육성 강조하며 이토 히로부미 언급 - 인재 키운 선례? (updated at 2024-04-13)

일제강점기가 더 살기 좋았을지도 모른다는 조수연 국민의힘 후보 - 친일파? (updated at 2024-04-13)

Marshall Ha님의 샤오미 SU7 시승기 - 테슬라의 일론 머스크님이 긴장할만한 느낌 (updated at 2024-04-09)

윙크하는 귀염둥이 반려견들 (created at 2024-04-08)

달콤 살벌한 고백 (created at 2024-04-08)

북한 최정예 공수부대 훈련 모습 (updated at 2024-04-02)

맛있었던 친구 어머니의 주먹밥이 먹고 싶어요 (created at 2024-04-02)

자리 마음에 안든다고 6급 공무원 패는 농협 조합장 (created at 2024-03-26)

85세 딸 짜장면 사주는 102세 어머니 (created at 2024-03-26)

1990년대 감각파 도둑 (created at 2024-03-26)

치매에 걸린 69살의 브루스 윌리스가 전부인 데미무어를 보고 한 말 (updated at 2024-03-22)

경제는 대통령이 살리는 것이 아닙니다 라던 윤석열대통령 - 상황 안좋아지자 여러 전략을 펼쳤지만, 부작용 속출했던 2024년의 봄 (updated at 2024-03-13)

극빈의 생활을 하고 배운것이 없는 사람은 자유가 뭔지도 모를 뿐 아니라 왜 개인에게 필요한지에 대한 필요성을 못느낀다는 윤석열 대통령 (updated at 2024-03-08)

조선일보를 안본다는 사람들이 말하는 그 이유 - 천황폐하, 전두환 각하, 김일성 장군 만세? (created at 2024-03-07)

광폭타이어를 장착하면 성능이 좋아질거라는 착각 (updated at 2024-03-03)

면허시험장에서 면허갱신하면 하루만에 끝나나? (updated at 2024-03-03)

신한은행/신한투자증권 금융거래 종합보고서 다운로드 방법 (updated at 2024-02-26)

100년 된 일본 장난감 회사가 내놓은 변신 기술에 난리난 과학계 (created at 2024-02-26)

알리에서 발견한 한글 지원하는 가성비 쩌는 무선 기계식키보드 (updated at 2024-02-25)

쌍팔년도가 1988년인줄 알았던 1인 (updated at 2024-02-23)

이쁜 색으로 변신한 테슬라 사이버트럭 (created at 2024-02-23)

2024년 카타르 아시안컵 4강전 전날 한국 대표팀 내부에 있었던 이강인의 폭주 (updated at 2024-02-21)

강릉 맛집 지도 (updated at 2024-02-20)

간이 안좋을 때 나타나는 증상 20가지 (updated at 2024-02-20)

배설물을 이용하여 일본에 저항했던 독립운동가 조명하 (updated at 2024-02-20)

요건 몰랐지롱? 이순신을 사랑한 외국인 (created at 2024-02-20)

원빈도 머리빨 (created at 2024-02-19)

대표적인 대한민국의 미남배우 중 하나인 원빈 (created at 2024-02-19)

백제의 건국 시조 온조왕 (updated at 2024-02-19)

700년동안 대한민국 고대국가의 한축이었던 백제시대 (created at 2024-02-19)

대머리들에게 주는 대머리의 조언 (created at 2024-02-17)

일본의 여성 락그룹 프린세스 프린세스의 "다이아몬드" (created at 2024-02-17)

결혼식 직전 연락두절된 신랑 (created at 2024-02-17)

대한민국 축구팀 파문으로 인해 중국 소셜미디어까지 등장한 탁구 전도사 이강인 (updated at 2024-02-16)

조국의 반격으로 흥미진진하게 흘러가는 한국의 정치판 - 데뷰와 동시에 한동훈 장관에게 던진 4개의 질문 (updated at 2024-02-15)

2024년 카타르 아시안컵 4강전 전날 내분사태로 갑자기 회자되는 이승우선수의 친화력 (created at 2024-02-15)

카카오뱅크 금융거래종합보고서/잔액증명서/거래내역서 발급 방법 (created at 2024-02-14)

아이가 최고의 스승이었다 (created at 2024-02-13)

이제는 국민 유행어로 등극한 한동훈의 "싫으면 시집가" (updated at 2024-02-13)

설 연휴 잔소리 메뉴판 - 이제 잔소리 하기전에 요금부터... (updated at 2024-02-10)

로버트 드니로의 70년 전 모습 (created at 2024-02-08)

카메라 어플로 만들어본 슈퍼걸 - 엄... 최종 작품은 왠지... (created at 2024-02-08)

앞트임 하고 새롭게 태어난 대한민국의 젊은 용사 (created at 2024-02-08)

비가 억수로 내리던 2024년의 2월 어느날 캘리포니아의 밤 카니예 웨스트와 그의 아나 비앙카 센소리 (updated at 2024-02-08)

스케방형사 1화 - 수수께끼의 전학소녀사키 (created at 2024-02-05)

백제와 일본의 교류가 가장 활발했던 시기는 근초고왕 시대 (created at 2024-02-05)

일에 찌들은 아빠가 꿈에서 깨어나지 않자 구출해주는 짱구 (created at 2024-02-03)

이제는 할아버지가 된 휴 그랜트(Hugh Grant)가 블랙핑크 콘서트에 다녀온 후 소감 (created at 2024-02-03)