¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  14Àå ±×·¡ÇÈ  14.4 MediaTrackerŬ·¡½º  

 

14.4 MediaTrackerŬ·¡½º

 

 ¡°¾î, ¸ø µé¾îº» Ŭ·¡½º³×!¡± ¶ó°í »ý°¢ÇϽŠºÐµéÀÌ ¸¹À» °ÍÀÔ´Ï´Ù. ÀÌ MediaTrackerŬ·¡½º´Â ÁÖ·Î ³×Æ®¿öÅ©»ó¿¡¼­ ¸¹ÀÌ »ç¿ëµÇ´Â Ŭ·¡½ºÀÔ´Ï´Ù. ¹°·Ð ³×Æ®¿öÅ©¿Í °ü°è¾øÀÌ ·ÎÄû󿡼­µµ »ç¿ëµË´Ï´Ù. ÇÏÁö¸¸ ÀÌ MediaTrackerŬ·¡½ºÀÇ ±â´ÉÀ» ¾Ë°í º¸¸é ¿Ö ³×Æ®¿öÅ©»óÅ¿¡¼­ ¸¹ÀÌ »ç¿ëÇÏ´ÂÁö ¾Ë°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌ MediaTrackerŬ·¡½º´Â ·ÎµùÀ» º¸ÀåÇϱâ À§ÇÑ Å¬·¡½ºÀÔ´Ï´Ù. ½±°Ô ¼³¸íµå¸®¸é ±×¸²ÀÌ ÀüºÎ Àü¼Û µÉ ¶§±îÁö ±â´Ù¸®´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ±×·³ ¿¹Á¦¸¦ º» ÈÄ ¼³¸í µå¸®°Ú½À´Ï´Ù.

 ´ÙÀ½Àº MediaTrackerŬ·¡½º¸¦ ÀÌ¿ëÇØ À̹ÌÁö¸¦ ·ÎµùÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.

 

MediaTrackerTest.java(MediaTrackerŬ·¡½º¸¦ Å×½ºÆ® Çϱâ À§ÇÑ ¿¹Á¦)

import java.awt.*;

import java.awt.image.*;

public class MediaTrackerTest extends Frame {

   private Image image=null;

   private BufferedImage bi = null;

   private int width =0;

   private int height =0;

   public static void main(String args[]) {

       MediaTrackerTest mtt = new MediaTrackerTest();

       mtt.makeImage("java_logo.jpg");

   }

   public MediaTrackerTest() {

       this.setSize(150,170);

       this.show();

   }                            

   public void makeImage(String filename) {

       try {

          image = Toolkit.getDefaultToolkit().getImage(filename);

        MediaTracker tracker = new MediaTracker(this);

        tracker.addImage(image,0);

        tracker.waitForID(0);

         width= image.getWidth(null);

          height= image.getHeight(null);

          bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

          Graphics gg = bi.getGraphics();       

          gg.drawImage(image, 0,0, this);

          gg.dispose();

          repaint();

       } catch (Exception ex){

          System.out.println(ex.toString());

       }

   }

   public void paint (Graphics g) {

       if(bi!=null)

          g.drawImage(bi, 50,50, this);

   }

}

C:\JavaExample\14>javac JPEGFileEncodeImage.java

C:\JavaExample\14>java JPEGFileEncodeImage

 

MediaTrackerŬ·¡½º¸¦ ¼³¸íÇϱâ À§ÇØ ¿¹Á¦¸¦ ³Â´Âµ¥, ´Ù¸¥ ºÎºÐÀÌ ÈξÀ ´õ ¸¹±º¿ä. ¿¹Á¦ÀÇ ÀÚ¼¼ÇÑ ºÎºÐÀº µÚ¿¡ À̹ÌÁö ·Îµù ºÎºÐ¿¡¼­ ¼³¸í µå¸®°í Áö±ÝÀº ¿ø·¡´ë·Î MediaTrackerŬ·¡½º¿¡ ´ëÇØ¼­ ¼³¸í µå¸®ÁÒ.

 

 MediaTrackerŬ·¡½º´Â 10Àå¿¡¼­ ¹è¿ü´ø ObjectŬ·¡½ºÀÇ wait()¸Þ¼­µå¿Í ºñ½ÁÇÕ´Ï´Ù. ´«Ä¡ ºü¸¥ ºÐµéÀº ÀÌÇØÇϼÌÀ»Áöµµ ¸ð¸£°Ú½À´Ï´Ù.

 

 ¿¹Á¦¿¡¼­ º¸¸é MediaTrackerŬ·¡½º¸¦ »ç¿ëÇϱ⠹ٷΠ¾Æ·¡ ±¸¹®¿¡¼­ À̹ÌÁö¸¦ ·ÎµåÇϰí ÀÖ½À´Ï´Ù. ¸ÕÀú ImageŬ·¡½ºÀÇ °´Ã¼ image¸¦ »ý¼ºÇß½À´Ï´Ù.

 

n        Image image = Toolkit.getDefaultToolkit().getImage(filename);

 

java.awt.ToolkitŬ·¡½ºÀÇ ¸â¹ö¸Þ¼­µåÀÎ getDefaultToolkit()¸Þ¼­µå¿Í getImage(String filename)¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© image°´Ã¼¸¦ ¾ò¾î¿À°í ÀÖ½À´Ï´Ù. ÀÌ ¶§ MediaTrackerŬ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù.

 

n        MediaTracker tracker = new MediaTracker(this);

 

 ¿ì¼± MediaTrackerŬ·¡½ºÀÇ °´Ã¼ tracker¸¦ »ý¼ºÇß½À´Ï´Ù. ±Ùµ¥ ¿©±â¿¡¼­ Àü¿¡ º¸´ø ³ðÀÌ ³ª¿Ô½À´Ï´Ù. this¶ó´Â °ÍÀÌ °©ÀÚ±â Æ¢¾î ³ª¿Ô½À´Ï´Ù. ¿ì¸®´Â ÀÌ this¿¡ ´ëÇÏ¿© 4Àå¿¡¼­ ¹è¿ü½À´Ï´Ù. ±â¾ï ¾È ³ª½Ã´Â ºÐÀº 4ÀåÀ» È®ÀÎ ÇØº¸½Ã±æ ¹Ù¶ø´Ï´Ù. ¡®¾ðÁ¨°¡ »ý±æ ³» ÁÖ¼ÒÀÇ this¡¯ »ý°¢ÀÌ ³ª½Ê´Ï±î? ±×·¡µµ ¾Æ¸®¼ÛÇÏÁö¿ä? MediaTrackerŬ·¡½ºÀÇ »ý¼ºÀÚ¸Þ¼­µå´Â °´Ã¼¸¦ »ý¼ºÇÒ ¶§ À̹ÌÁö¸¦ ±×¸± ÄÄÆ÷³ÍÆ®¸¦ ¿ä±¸ÇÕ´Ï´Ù. ±×·±µ¥ À§ÀÇ ¿¹Á¦¿¡¼­ À̹ÌÁö¸¦ ±×¸± ÄÄÆ÷³ÍÆ®´Â FrameÀÔ´Ï´Ù. ÇÏÁö¸¸ Áö±Ý ÇÁ·Î±×·¥À» µðÀÚÀÎÇϰí ÀÖ¾î, ¸Þ¸ð¸®°¡ »ý¼ºµµ µÇÁö ¾Ê¾Ò´Âµ¥ ¾î¶»°Ô ÂüÁ¶°ªÀ» ³Ñ°Ü ÁÙ ¼ö ÀÖ°Ú½À´Ï±î? ±×·¡¼­ ¿©±â¿¡¼­ this¸¦ »ç¿ëÇØ¼­ Áö±ÝÀº ÂüÁ¶°ªÀÌ ¾øÁö¸¸ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¾î FrameÀÌ »ý¼ºµÇ¸é ±× FrameÀÇ ¸Þ¸ð¸® ÁÖ¼Ò¸¦ ³Ñ°ÜÁÖ°Ú´Ù´Â ¶æÀÔ´Ï´Ù. º°·Î ¾î·Á¿ï °ÍÀÌ ¾ø½À´Ï´Ù.

 

n        tracker.addImage(image,0);

n        tracker.waitForID(0);

 

 ±×¸®°í, »ý¼ºÇÑ °´Ã¼ tracker¸¦ ÀÌ¿ëÇÏ¿© addImage(Image image, int id)¸Þ¼­µå¸¦ È£ÃâÇÏ¿´½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â tracker°´Ã¼°¡ ¾î¶² À̹ÌÁö¸¦ ¸ñÇ¥·Î »ïÀ»Áö¸¦ ¾Ë·ÁÁÖ°í, ±× À̹ÌÁö¿¡ id°ªÀ» ÁÝ´Ï´Ù. ±×¸®°í tracker°´Ã¼´Â waitForID(int id)¸Þ¼­µå¸¦ È£ÃâÇÏ¿© ÁÝ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÀÔ·ÂµÈ id°ªÀ» °¡Áö°í ÀÖ´Â image°¡ ÀüºÎ ·ÎµùÀÌ µÉ ¶§±îÁö ÇÁ·Î±×·¥À» wait½Ãŵ´Ï´Ù. ±×·± ÈÄ image°¡ ÀüºÎ ·ÎµùµÇ¸é ÀÚµ¿À¸·Î notifyÇØÁÖ´Â °ÅÁÒ. ÀÌÁ¦ ¿Ö ³×Æ®¿öÅ©»ó¿¡¼­ ¸¹ÀÌ »ç¿ëÇÏ´ÂÁö ÀÌÀ¯¸¦ ¾Ë °Í °°Áö ¾Ê½À´Ï±î? ¸¸¾à ¿Â¶óÀÎ »ó¿¡¼­ ±×¸²ÀÌ ÀüºÎ ³Ñ¾î¿ÀÁöµµ ¾Ê¾Ò´Âµ¥ ÇÁ·Î±×·¥ÀÌ °è¼Ó ÁøÇàµÈ´Ù¸é ¾î¶»°Ô µÇ°Ú½À´Ï±î? ¹Ù·Î ±×·± °ÍÀ» ¹æÁöÇØÁÖ´Â °ÅÁÒ. ¸¸¾à À̹ÌÁö·Îµå ¶Ç´Â ¹èÀ²Á¶Á¤ Áß¿¡ ¿À·ù°¡ ¹ß»ýÇÏ¸é ±× À̹ÌÁöÀÇ ·Îµå´Â ¿Ï·áµÈ °ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù. ±×·² ¶§ isErrorAny()¸Þ¼­µå¿Í isErrorID()¸Þ¼­µå¸¦ »ç¿ëÇØ¼­ ¿À·ù¸¦ Á¡°ËÇÏ½Ã¸é µË´Ï´Ù.

 

 ±×·±µ¥ ÀÌ·¸°Ô ±æ°Ô ¼³¸íÇߴµ¥ ¿¹Á¦ÀÇ ±½Àº ±Û¾¾·Î Ç¥½ÃµÈ ºÎºÐÀ» »©°í ÄÄÆÄÀÏ ÇÏ¿©µµ ¿¡·¯´Â ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ÇÏÁö¸¸ °á°ú°¡ ¶È°°ÀÌ ³ª¿Â´Ù°í º¸ÀåÀº ÇÒ ¼ö ¾ø½À´Ï´Ù. ¶È°°ÀÌ ³ª¿À´Â ¿¹Á¦µµ ÀÖ°í, ±×·¸Áö ¾ÊÀº ¿¹Á¦µµ ÀÖ½À´Ï´Ù. À§ÀÇ ¿¹Á¦´Â ¾È ÇØÁÖ¸é ¿¡·¯°¡ ¶ß´Â ¿¹Á¦ÀÔ´Ï´Ù. ½ÇÇà½ÃÀÇ ¿¡·¯ ¹ß»ýÀÌÁÒ. ¸¸¾à »ç¿ëÇÏÁö ¾Ê¾Æµµ µÇ´Â ¿¹Á¦´Â »ç¿ëÀÚ°¡ °áÁ¤ÇÏ¸é µË´Ï´Ù. ÇÏÁö¸¸ »ç¿ëÇÏ´Â °ÍÀÌ ¾ÈÀüÇϰÚÁÒ.

 

¿Ö MediaTrackerŬ·¡½º¸¦ ³×Æ®¿öÅ©»ó¿¡¼­ ¸¹ÀÌ »ç¿ëÇÑ´Ù´Â °ÍÀ» ÀÌÁ¦ Á» ÀÌÇØÇϽø®¶ó ¹Ï½À´Ï´Ù. ¡°ÀÏÁ¾ÀÇ wait()¸Þ¼­µå´Ù.¡±¶ó°í »ý°¢ÇÏ¸é ±×´ÙÁö ¾î·Á¿ï °Íµµ ¾ø´Â ³ðÀÔ´Ï´Ù. ÇÏÁö¸¸ ²À »ç¿ëÇ϶ó´Â °ÍÀº ¾Æ´Ï´Ï Àß »ý°¢Çϼż­ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽñ⠹ٶø´Ï´Ù. ±×¸®°í ÀÌ MediaTrackerŬ·¡½º´Â À̹ÌÁö»Ó¸¸ ¾Æ´Ï¶ó ¿Àµð¿À¸¦ Áö¿øÇÏ°Ô ¸¸µç´Ù°í ÇßÁö¸¸ ¾ÆÁ÷ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

 

¢Ñ MediaTracker?

MediaTracker tracker = new MediaTracker(this);

addImage(Image image, int id)¸Þ¼­µå¸¦ »ç¿ëÇØ¼­ ÃßÀûÇØ¾ß ÇÒ À̹ÌÁö¸¦ ¼³Á¤Çϰí, id°ªÀ» ¼³Á¤ÇÑ´Ù.

waitForID(int id)¸Þ¼­µå¸¦ »ç¿ëÇØ¼­ ÀÔ·ÂµÈ id°ªÀÇ image°¡ ·Îµù µÉ ¶§±îÁö ÇÁ·Î±×·¥À» wait½ÃŲ´Ù.

 

MediaTracker »ý¼ºÀÚ¸Þ¼­µå

public MediaTracker(Component comp) : ÁöÁ¤µÈ ÄÄÆ÷³ÍÆ®ÀÇ À̹ÌÁö¸¦ ÃßÀûÇÏ´Â MediaTracker°´Ã¼¸¦ ÀÛ¼ºÇÕ´Ï´Ù

 

MediaTracker ÁÖ¿ä ¸â¹ö¸Þ¼­µå

public void addImage(Image image, int id) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀû ÁßÀÎ À̹ÌÁöÀÇ ¸ñ·Ï¿¡ À̹ÌÁö¸¦ Ãß°¡ÇÕ´Ï´Ù.

public void addImage(Image image, int id , int w, int h) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀû ÁßÀÎ À̹ÌÁöÀÇ ¸ñ·Ï¿¡ ¹èÀ²À» Á¶Á¤ÇÑ À̹ÌÁö¸¦ Ãß°¡ÇÕ´Ï´Ù.

public boolean checkAll() : ¸Åü ÃßÀûÀÚ°¡ ÃßÀû ÁßÀÎ À̹ÌÁö¸¦ ¸ðµÎ ·ÎµåÇß´ÂÁö ¿©ºÎ¸¦ Á¡°ËÇÕ´Ï´Ù.

public boolean checkAll(boolean load) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀû ÁßÀÎ À̹ÌÁö¸¦ ¸ðµÎ ·ÎµåÇß´ÂÁö ¿©ºÎ¸¦ Á¡°ËÇÕ´Ï´Ù.

public boolean checkID(int id) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ÁöÁ¤µÈ ½Äº°ÀÚ¸¦ °¡Áø À̹ÌÁö¸¦ ¸ðµÎ ·ÎµåÇß´ÂÁö ¿©ºÎ¸¦ Á¡°ËÇÕ´Ï´Ù.

public boolean checkID(int id, boolean load) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ÁöÁ¤µÈ ½Äº°ÀÚ¸¦ °¡Áø À̹ÌÁö¸¦ ¸ðµÎ ·ÎµåÇß´ÂÁö ¿©ºÎ¸¦ Á¡°ËÇÕ´Ï´Ù.

public Object[] getErrorsAny() : ¿À·ù°¡ ¹ß»ýÇÑ ¸ðµç ¸Åü ¸ñ·ÏÀ» ¸®ÅÏÇÕ´Ï´Ù.

public Object[] getErrorsID(int id) : ÁöÁ¤µÈ ID¸¦ °¡Á³À¸¸ç ¿À·ù°¡ ¹ß»ýÇÑ ¸Åü ¸ñ·ÏÀ» ¸®ÅÏÇÕ´Ï´Ù.

public boolean isErrorAny() : ¸ðµç À̹ÌÁöÀÇ ¿À·ù »óŸ¦ Á¡°ËÇÕ´Ï´Ù.

public boolean isErrorID(int id) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ÁöÁ¤µÈ ½Äº°ÀÚ¸¦ °¡Áø ¸ðµç À̹ÌÁöÀÇ ¿À·ù »óŸ¦ Á¡°ËÇÕ´Ï´Ù.

public void removeImage(Image image) : ¸Åü ÃßÀûÀÚ¿¡¼­ ÁöÁ¤µÈ À̹ÌÁö¸¦ Á¦°ÅÇÕ´Ï´Ù.

public void removeImage(Image image, int id) : ¸Åü ÃßÀûÀÚÀÇ ÁöÁ¤µÈ ÃßÀû ID¿¡¼­ ÁöÁ¤µÈ À̹ÌÁö¸¦ Á¦°ÅÇÕ´Ï´Ù.

public void removeImage(Image image, int id, int w, int h) : ¸Åü ÃßÀûÀÚ¿¡¼­ ÁöÁ¤µÈ °¡·Î ±æÀÌ, ¼¼·Î ±æÀÌ ¹× ID¸¦ °¡Áø ÁöÁ¤µÈ À̹ÌÁö¸¦ Á¦°ÅÇÕ´Ï´Ù.

public int statusAll(boolean load) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ¸ðµç ¸Åü »óÅÂÀÇ bitwise inclusive ORÀ» °è»êÇÏ°í ¸®ÅÏÇÕ´Ï´Ù.

public int statusID(int id, boolean load) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ÁöÁ¤µÈ ½Äº°ÀÚ´Â °¡Áø ¸ðµç ¸Åü »óÅÂÀÇ bitwise inclusive ORÀ» °è»êÇÏ°í ¸®ÅÏÇÕ´Ï´Ù.

public void waitForAll() : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ¸ðµç À̹ÌÁöÀÇ ·Îµå¸¦ ½ÃÀÛÇÕ´Ï´Ù.

public boolean waitForAll(long ms) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ¸ðµç À̹ÌÁöÀÇ ·Îµå¸¦ ½ÃÀÛÇÕ´Ï´Ù.

public void waitForID(int id) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ÁöÁ¤µÈ ½Äº°ÀÚ¸¦ °¡Áø ¸ðµç À̹ÌÁö ·Îµå¸¦ ½ÃÀÛÇÕ´Ï´Ù.

public boolean waitForID(int id, long ms) : ¸Åü ÃßÀûÀÚ°¡ ÃßÀûÇÏ´Â ÁöÁ¤µÈ ½Äº°ÀÚ´Â °¡Áø ¸ðµç À̹ÌÁö ·Îµå¸¦ ½ÃÀÛÇÕ´Ï´Ù.

 



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ
ÀúÀÚ:ÃÖ¿µ°ü