01: package de.anomic.ymage;
02:
03: import java.awt.Container;
04: import java.awt.Image;
05: import java.awt.MediaTracker;
06: import java.awt.Toolkit;
07:
08: public class ymageImageParser {
09:
10: public static final Image parse(String filename, byte[] source) {
11: MediaTracker mediaTracker = new MediaTracker(new Container());
12: Image image;
13: if (((filename.endsWith(".ico")) || (filename.endsWith(".bmp")))
14: && (ymageBMPParser.isBMP(source))) {
15: // parse image with BMP parser
16: ymageBMPParser bmpparser;
17: bmpparser = new ymageBMPParser(source);
18: image = bmpparser.getImage();
19: if (image == null)
20: return null;
21: } else if ((filename.endsWith(".ico"))
22: && (ymageICOParser.isICO(source))) {
23: // parse image with ICO parser
24: ymageICOParser icoparser;
25: icoparser = new ymageICOParser(source);
26: image = icoparser.getImage(0);
27: if (image == null)
28: return null;
29: } else {
30: // awt can handle jpg, png and gif formats, try it
31: image = Toolkit.getDefaultToolkit().createImage(source);
32: }
33:
34: int handle = image.hashCode();
35: mediaTracker.addImage(image, handle);
36: try {
37: mediaTracker.waitForID(handle);
38: } catch (InterruptedException e) {
39: }
40:
41: return image;
42: }
43:
44: }
|