org.kwis.msp.lcdui
Class Image

java.lang.Object
  |
  +--org.kwis.msp.lcdui.Image

public class Image
extends Object

이미지를 나타내는 클래스입니다. 이미지 클래스는 gif나 png등의 여러가지 이미지 포멧의 데이타로 부터 생성할 수 있으며, 이전에 있는 이미지로부터 복사하여 생성할 수도 있습니다. 이때 복사된 이미지에 한하여 getGraphics로 이미지의 내용의 변경이 가능합니다.

이미지는 변경이 가능한 이미지 변경이 가능하지 않은 이미지로 분류됩니다. 변경이 가능한 이미지는 주로 프로그램에서 임의적으로 만드는 이미지 이며, 이미지 파일로 부터 생성하는 이미지는 변경이 가능하지 않은 이미지 입니다.

변경하기 위해서는 이미지를 복사하여 사용해야 합니다. 코드는 다음과 같습니다.

Image src;

src = Image.createImage("/test.gif");
Image copy = Image.createImage(src);
Graphics g = copy.getGraphics();
g.drawLine(0, 0, 10, 10);

복사할때에 애니메이션 이미지인 경우에는 이미지 복사가 되지 않으며, mask된 이미지인 경우에 mask부분이 힌색으로 변환되어 복사되며, 복사된 이미지는 더이상 mask를 가지고 있지 않습니다.

현재 이미지는 gif(animated), png, bmp(RLE압축포함) 포맷을 지원합니다.


Constructor Summary
Image()
           
 
Method Summary
static Image createImage(byte[] imagedata, int imageoffset, int imagelength)
          지정된 이미지 데이타 어레이로 부터 이미지를 생성합니다.
static Image createImage(Image image)
          지정된 이미지를 복사해서 다른 편집이 가능한 이미지를 생성합니다.
static Image createImage(int width, int height)
          지정된 높이와 폭의 편집 가능한 이미지를 생성합니다.
static Image createImage(String name)
          지정된 리소스의 이미지를 생성합니다.
 Graphics getGraphics()
          이미지에 그릴수 있는 그래픽을 돌려줍니다.
 int getHeight()
          이미지의 높이를 돌려줍니다.
 int getWidth()
          이미지의 폭를 돌려줍니다.
 boolean isAnimated()
          Image가 Animation이 가능한지 여부를 돌려줍니다.
 boolean isMutable()
          이미지의 편집 가능 여부를 돌려줍니다.
static Image loadImage(String str, ImageObserver io)
          문자열이 지정하는 자료로 부터 이미지를 읽어들입니다.
 void play(ImageObserver ob)
          이미지의 움직임을 시작합니다.
 void stop()
          애니메이션을 중지시킵니다.
static void stopImage(ImageObserver io)
          ImageObserver에 대응하는 이미지를 읽기를 중단 시킵니다.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Image

public Image()
Method Detail

createImage

public static Image createImage(byte[] imagedata,
                                int imageoffset,
                                int imagelength)
지정된 이미지 데이타 어레이로 부터 이미지를 생성합니다. 이미지 데이타가 지정하는 바이트 어레이의 imageoffset부터 imagelength까지의 내용으로 이미지를 생성합니다. 이때 data의 내용은 각 플랫폼마다 다를 수 있습니다. 만일 데이타가 잘못되어 있는 경우에는 IllegalArgumentException이 발생합니다.

이 함수로 생성된 이미지는 편집이 불가능합니다.

Parameters:
imagedata - 이미지 자료를 가지고 있는 어레이
imageoffset - 어레이의 시작점
imagelength - 이미지 자료의 길이
Returns:
생성된 이미지
Throws:
IllegalArgumentException - 제대로 된 형식의 데이타가 아닌 경우
NullPointerException - imagedatanull인 경우.
ArrayIndexOutOfBoundsException - imageoffsetimagelength가 지정하는 영역이 어레이의 유효한 영역을 벗어 날때

loadImage

public static Image loadImage(String str,
                              ImageObserver io)
문자열이 지정하는 자료로 부터 이미지를 읽어들입니다. 지정된 문자열은 경로명이 됩니다. 이 경로명으로부터 이미지 자료를 읽어 들여 이미지를 생성합니다. 이미지 생성하는 시점은 이 함수를 부르고 난 후 일정 시간 이후에 생성됩니다. 완성되는 시점에 ImageObservernotify 함수를 불러줍니다.

이 함수를 통해서 돌려진 이미지는 처음에는 아무런 내용이 없으며, 폭과 높이는 각각 0이 되고, 실제 이미지가 완성된 후(ImageObserver.notify가 불린후)에야 제대로 된 폭과 높이를 얻어 올 수 있습니다.

한 이미지에 대해서는 하나의 ImageObserver만이 가능합니다.

이 함수로 생성된 이미지는 편집이 불가능합니다.

Parameters:
str - 자료의 경로명을 지정하는 문자열
io - 이미지 생성을 알려줄 ImageObserver
Returns:
새로 생성된 이미지; 초기에는 아무런 내용이 없음
Throws:
NullPointerException - strnull인 경우.
See Also:
ImageObserver.notify(org.kwis.msp.lcdui.Image, int)

createImage

public static Image createImage(Image image)
지정된 이미지를 복사해서 다른 편집이 가능한 이미지를 생성합니다. 이미지의 내용을 복사해서 다른 편집이 가능한 이미지를 생성합니다. 이 이미지로 부터 getGraphics()를 통해서 Graphics 개체를 가져온 후에 이미지를 편집할 수 있습니다.

Animation 이미지는 각 프레임이 존재하기 때문에 이미지를 복사할 수 없으므로 이 경우에는 IllegalArgumentException을 던져줍니다.

이 함수로 생성된 이미지는 편집 가능합니다.

Parameters:
image - 복사할 이미지
Returns:
새로 만들어진 이미지
Throws:
IllegalArgumentException - 넘겨진 이미지가 animation인 경우
NullPointerException - imagenull인 경우.

createImage

public static Image createImage(int width,
                                int height)
지정된 높이와 폭의 편집 가능한 이미지를 생성합니다. 이 이미지는 초기에 힌색으로 초기화 되어있습니다. 또한 getGraphics()함수를 통해서 Graphics 객체를 얻어 와서 이 객체를 통해 이미지 편집이 가능합니다.

이 함수로 생성된 이미지는 편집 가능합니다.

Parameters:
width - 이미지의 폭.
height - 이미지의 높이.
Throws:
IllegalArgumentException - widthheight가 0이하인 경우

createImage

public static Image createImage(String name)
                         throws IOException
지정된 리소스의 이미지를 생성합니다. 클래스를 로드한 곳에서 지정된 경로명의 자원를 로드하여, 이미지로 만들어서 돌려줍니다. 에를 들면 jar파일로 부터 "res/image.png"라는 이미지를 읽는경우 Image img = createImage("res/image.png"); 와 같이 사용하면 됩니다.

이 함수로 생성된 이미지는 편집이 불가능합니다.

Parameters:
name - 자원 경로명
Returns:
이미지
Throws:
IllegalArugmentException - 만일 이미지가 잘못된 포맷이거나 자원이 존재하지 않는 경우
NullPointerException - namenull인 경우.
See Also:
Class.getResourceAsStream(java.lang.String)

getGraphics

public Graphics getGraphics()
이미지에 그릴수 있는 그래픽을 돌려줍니다. 편집 가능한 이미지에 대해서 Graphics객체를 얻어 옵니다. 만일 편집 가능하지 않은 이미지라면 null을 돌려줍니다.
Returns:
이미지의 Graphics객체

getHeight

public int getHeight()
이미지의 높이를 돌려줍니다.
Returns:
이미지의 높이

getWidth

public int getWidth()
이미지의 폭를 돌려줍니다.
Returns:
이미지의 높이

isMutable

public boolean isMutable()
이미지의 편집 가능 여부를 돌려줍니다.
Returns:
편집 가능한지의 여부

isAnimated

public boolean isAnimated()
Image가 Animation이 가능한지 여부를 돌려줍니다.
Returns:
Animation이 가능한지의 여부

play

public void play(ImageObserver ob)
이미지의 움직임을 시작합니다. 이미지가 Animation 이미지인 경우에 이 함수가 사용될 수 있습니다. Animation이 진행되는 동안 ImageObserver에 animation 진행 상황을 ImageObservernotify()함수를 호출함으로써 알려줍니다. Animation 이미지가 아닌 경우에 이 함수는 아무런 작업도 하지 않습니다.

이 함수는 상당히 많은 computing시간을 요구합니다. 새로운 프레임을 만들때 마다, gif를 decode하기 때문입니다. 또한 animation 이미지를 위해서 내부에 이미지 원본 내용을 그대로 저장하고 있기 때문에 메모리를 상당히 소모합니다. 이 함수를 호출하고 나서 stop함수를 꼭 호출하도록 하십시오. 그래야 메모리와 속도를 늘릴 수 있습니다.

Parameters:
ob - 이미지 Observer
See Also:
ImageObserver

stop

public void stop()
애니메이션을 중지시킵니다. 애니메이션을 멈춥니다. 이미지가 Animation Gif와 같은 이미지인 경우에 이 함수가 사용될 수 있습니다. Animation 이미지가 아닌 경우에 아무런 작업도 하지 않습니다. 이미지를 더이상 사용하지 않으면 이 함수를 불러서 이미지의 레퍼런스를 없애야 합니다. 그렇지 않으면, 사용하지 않은 이미지 레퍼런스를 가지게 되므로, 메모리를 낭비할 수 있습니다.

stopImage

public static void stopImage(ImageObserver io)
ImageObserver에 대응하는 이미지를 읽기를 중단 시킵니다. loadImageplay로 "이미지 읽기 큐"에 쌓인 작업을 삭제합니다. 삭제된 후에는 ImageObserver.notify는 더이상 불리지 않습니다. 응용 프로그램이 play함수로 애니메이션 이미지를 의 애니메이션을 시작하였다면, stop함수나 이 함수로 반드시 정지 시켜야합니다. 그렇지 않으면 내부적으로 계속 이미지 디코딩이 일어나므로 CPU 수행 시간과 메모리를 낭비하게 됩니다.

ionull이면 함수는 아무런 일도 하지 않습니다.

Parameters:
io - 삭제할 이미지에 대응하는 ImageObserver


AromaSoft Corp. Proprietary and Confidential

(C)opyright 2003 AromaSoft Corp. All right reserved.
Contact : contact@aromasoft.com