Lesson 14 Page 1 1 import java applet

  • Slides: 20
Download presentation
Lesson 14. 멀티미디어 Page 1

Lesson 14. 멀티미디어 Page 1

이미지 출력 예제 1 : import java. applet. *; 2 : import java. awt.

이미지 출력 예제 1 : import java. applet. *; 2 : import java. awt. *; 3: 4 : public class Image. Test extends Applet 5: { 6 : Image my. Image; // 이미지 객체 선언 7: 8 : public void init() 9: { 10 : my. Image= get. Image(get. Code. Base(), "doldol. jpg"); 11 : } 12 : 13 : public void paint(Graphics g) 14 : { 15 : g. draw. Image(my. Image, 0, 0, this); 16 : g. draw. String("doldol. jpg", 170, 580); 17 : } 18 : } Page 3

애플리케이션에서 이미지 사용하기 import java. awt. *; . . . Toolkit my. Toolkit= Toolkit.

애플리케이션에서 이미지 사용하기 import java. awt. *; . . . Toolkit my. Toolkit= Toolkit. get. Default. Toolkit(); Image my. Image= my. Toolkit. get. Image("a. jpg"); . . . g. draw. Image(my. Image, 20, 40, this); Applet 클래스 대신 Toolkit 클래스의. . . get. Image() 메소드 사용 Page 4

이미지 크기 알아내기. . . 6 : Image my. Image; 7: 8 : public

이미지 크기 알아내기. . . 6 : Image my. Image; 7: 8 : public void init() 9: { 10 : my. Image= get. Image(get. Code. Base(), "fantasy. jpg"); 11 : } 12 : 13 : public void paint(Graphics g) 14 : { 15 : g. draw. Image(my. Image, 0, 0, this); 16 : 17 : // 이미지 크기 출력 18 : g. draw. String("가로 크기: "+ my. Image. get. Width(this), 10, 330); 19 : g. draw. String("세로 크기: "+ my. Image. get. Height(this), 10, 350); 20 : } 21 : } Page 5

이미지 스케일링. . . 31 : 32 : 33 : switch(scale. Rate){ // scale.

이미지 스케일링. . . 31 : 32 : 33 : switch(scale. Rate){ // scale. Rate 값에 따라 이미지 스케일링 case 0: 화면 출력 시작위치(X좌표, Y좌표) g. draw. Image(my. Image, 0, 40, my. Image. get. Width(this)/2, my. Image. get. Height(this)/2, 34 : 35 : 36 : . . . 출력 끝 위치 0, 0, my. Image. get. Width(this), my. Image. get. Height(this), this); break; draw. Image(img, dx 1, dy 1, dx 2, dy 2, sx 1, sy 1, sx 2, sy 2, observer); img의 (sx 1, sy 1)부터 (sx 2, sy 2)를 화면의 (dx 1, dy 1)부터 (dx 2, dy 2)에 출력 Page 6

이미지 뒤집기. . . 32 : . . . 38 : 39 : switch(flip.

이미지 뒤집기. . . 32 : . . . 38 : 39 : switch(flip. Select){ // flip. Select값에 따라 이미지를 출력 case 1: g. draw. Image(my. Image, my. Image. get. Width(this), 40, 0, my. Image. get. Height(this), 40 : 41 : . . . 화면 출력 시작위치(X좌표, Y좌표) 출력 끝 위치 0, 0, my. Image. get. Width(this), my. Image. get. Height(this), this); break; draw. Image(img, dx 1, dy 1, dx 2, dy 2, sx 1, sy 1, sx 2, sy 2, observer); img의 (sx 1, sy 1)부터 (sx 2, sy 2)를 화면의 (dx 1, dy 1)부터 (dx 2, dy 2)에 출력 Page 7

이미지 클리핑. . . 화면 출력 위치 15 : public void paint(Graphics g) 16

이미지 클리핑. . . 화면 출력 위치 15 : public void paint(Graphics g) 16 : { 17 : g. draw. Image(my. Image, 0, 10, 300, 110, 18 : 19 : }. . . 0, 50, 300, 150, this); // 이미지의 일부만 출력 원본 이미지의 출력할 영역 draw. Image(img, dx 1, dy 1, dx 2, dy 2, sx 1, sy 1, sx 2, sy 2, observer); img의 (sx 1, sy 1)부터 (sx 2, sy 2)를 화면의 (dx 1, dy 1)부터 (dx 2, dy 2)에 출력 Page 8

이미지 나누기 Image my. Image= get. Image(get. Code. Base(), "a. jpg"); 1. Image 객체의

이미지 나누기 Image my. Image= get. Image(get. Code. Base(), "a. jpg"); 1. Image 객체의 get. Source() 메소드로 Image. Producer 객체를 구함 Image. Producer my. P= my. Image. get. Source(); 2. Crop. Image. Filter() 메소드로 오려낼 부분을 지 정한 Image. Filter 객체를 생성 Image. Filter my. F= new Crop. Image. Filter(64, 128, 64); 3. Filtered. Image. Sourcer 객체를 생성 Filtered. Image. Source fim= new Filtered. Image. Source(my. P, my. F); 4. create. Image() 메소드의 인수로 전달 Image mini. Image 1= create. Image(fim); Page 9

이미지 나누기 예제. . . 7: 8: 9: 10 : 11 : 12 :

이미지 나누기 예제. . . 7: 8: 9: 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : Image my. Image; Image image. Piece[]; public void init() { image. Piece= new Image[7]; my. Image= get. Image(get. Code. Base(), "character. gif"); Image. Producer my. Producer= my. Image. get. Source(); for(int i=0; i<7; i++){ Image. Filter my. Filter= new Crop. Image. Filter(0, i*80, 80); image. Piece[i]= create. Image(new Filtered. Image. Source(my. Producer, my. Filter)); 20 : } 21 : }. . . Page 10

Media. Tracker • 미디어 트랙커 생성과 등록 MEDIATRACKER my. T= new Media. Tracker(this); Image

Media. Tracker • 미디어 트랙커 생성과 등록 MEDIATRACKER my. T= new Media. Tracker(this); Image my. Image= get. Image(get. Code. Base(), "a. gif"); my. T. add. Image(my. Image, 0); 변수 이미지등록 이미지 ID • 등록된 미디어 추적(로드가 끝날 때까지 대기) my. T. wait. For. ID(0); 변수 로드대기 등록한ID Page 11

이미지 로드 추적. . . 19 20 21 22 23 24 25 26. .

이미지 로드 추적. . . 19 20 21 22 23 24 25 26. . . 54 55 56 57 58 59 60 61. . . : : : : my. Tracker= new Media. Tracker(this); javacup= new Image[image. Total]; for(int i=0; i<image. Total; i++){ javacup[i]= get. Image(get. Code. Base(), "javacup"+i+". gif"); my. Tracker. add. Image(javacup[i], i ); 이미지 등록 } for(int i=0; i<image. Total; i++){ try{ my. Tracker. wait. For. ID( i ); 해당 ID의 이미지가 로드될 때까지 대기 }catch(Interrupted. Exception ie){} while((my. Tracker. status. ID(i, true) & Media. Tracker. COMPLETE) == 0){} image. Loaded++; Page 12

My. Java. Cup 예제. . . 52 53 54 55 56 57 58 59

My. Java. Cup 예제. . . 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70. . . : : : : : while(true){ try{ clock. sleep(50); // 0. 05초마다 쓰레드 작동 }catch(Interrupted. Exception ie){} if(x<400){ // 이미지 출력 좌표를 0부터 399까지 변화시킴 x++; y++; }else{ x= y= 0; } if(index<image. Total-1){ // 출력할 이미지 선택 index++; . . . }else{ 45 : public void paint(Graphics g) index= 0; 46 : { } 47 : g. draw. Image(javacup[index], x, y, 59, 90, this); 48 : } repaint(); 49 : . . . Page 14

더블 버퍼링 구현하기 1. 가상화면과 그래픽 컨텍스를 생성 Image off= create. Image(400, 400); Graphics

더블 버퍼링 구현하기 1. 가상화면과 그래픽 컨텍스를 생성 Image off= create. Image(400, 400); Graphics off. G= off. get. Graphics(); 2. 이미지를 가상화면에 출력 off. G. draw. Image(my. Image, x, y); 3. 가상화면을 실제화면으로 옮김 g. draw. Image(off, 0, 0, this); Page 17