¡°¾î, ¸ø µé¾îº» Ŭ·¡½º³×!¡± ¶ó°í »ý°¢ÇϽŠºÐµéÀÌ ¸¹À» °ÍÀÔ´Ï´Ù. ÀÌ 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ºÎ ÀúÀÚ:ÃÖ¿µ°ü |