comparison servlet/src/digilib/image/ImageLoaderImageInfoDocuInfo.java @ 205:6221d688eab6

Servlet version 1.18b9 -- cleanup and bugfixes - fixed bug with slow color JPEGs - better pathname handling - better filehandle cleanup (hopefully)
author robcast
date Fri, 12 Mar 2004 19:52:06 +0100
parents afe7ff98bb71
children c4ee5f0c3a77
comparison
equal deleted inserted replaced
204:37a697fd8ec6 205:6221d688eab6
45 45
46 private Logger logger = Logger.getLogger(this.getClass()); 46 private Logger logger = Logger.getLogger(this.getClass());
47 47
48 /* check image size and type and store in ImageFile f */ 48 /* check image size and type and store in ImageFile f */
49 public boolean checkFile(ImageFile imgf) throws IOException { 49 public boolean checkFile(ImageFile imgf) throws IOException {
50 // fileset to store the information
50 ImageFileset imgfs = imgf.getParent(); 51 ImageFileset imgfs = imgf.getParent();
51 File f = imgf.getFile(); 52 File f = imgf.getFile();
52 if (f == null) { 53 if (f == null) {
53 throw new IOException("File not found!"); 54 throw new IOException("File not found!");
54 } 55 }
56 // set up ImageInfo object 57 // set up ImageInfo object
57 ImageInfo iif = new ImageInfo(); 58 ImageInfo iif = new ImageInfo();
58 iif.setInput(raf); 59 iif.setInput(raf);
59 iif.setCollectComments(false); 60 iif.setCollectComments(false);
60 iif.setDetermineImageNumber(false); 61 iif.setDetermineImageNumber(false);
62 logger.debug("identifying (ImageInfo) "+f);
61 // try with ImageInfo first 63 // try with ImageInfo first
62 if (iif.check()) { 64 if (iif.check()) {
63 ImageSize d = 65 ImageSize d =
64 new ImageSize(iif.getWidth(), iif.getHeight()); 66 new ImageSize(iif.getWidth(), iif.getHeight());
65 imgf.setSize(d); 67 imgf.setSize(d);
67 if (imgfs != null) { 69 if (imgfs != null) {
68 imgfs.setAspect(d); 70 imgfs.setAspect(d);
69 } 71 }
70 raf.close(); 72 raf.close();
71 } else { 73 } else {
74 logger.debug("identifying (ImageIO) "+f);
72 // else use ImageReader 75 // else use ImageReader
73 ImageInputStream istream = ImageIO.createImageInputStream(raf); 76 ImageInputStream istream = ImageIO.createImageInputStream(raf);
74 Iterator readers = ImageIO.getImageReaders(istream); 77 Iterator readers = ImageIO.getImageReaders(istream);
75 //String ext = f.getName().substring(f.getName().lastIndexOf('.')+1); 78 //String ext = f.getName().substring(f.getName().lastIndexOf('.')+1);
76 //Iterator readers = ImageIO.getImageReadersBySuffix(ext); 79 //Iterator readers = ImageIO.getImageReadersBySuffix(ext);
77 if (! readers.hasNext()) { 80 if (! readers.hasNext()) {
78 throw new FileOpException("ERROR: unknown image file format!"); 81 throw new FileOpException("ERROR: unknown image file format!");
79 } 82 }
80 ImageReader reader = (ImageReader) readers.next(); 83 ImageReader reader = (ImageReader) readers.next();
81 /* are there more readers? */ 84 /* are there more readers? */
82 logger.debug("this reader: " + reader.getClass()); 85 logger.debug("ImageIO: this reader: " + reader.getClass());
83 while (readers.hasNext()) { 86 while (readers.hasNext()) {
84 logger.debug("next reader: " + readers.next().getClass()); 87 logger.debug("ImageIO: next reader: " + readers.next().getClass());
85 } 88 }
86 reader.setInput(istream); 89 reader.setInput(istream);
87 ImageSize d = 90 ImageSize d =
88 new ImageSize(reader.getWidth(0), reader.getHeight(0)); 91 new ImageSize(reader.getWidth(0), reader.getHeight(0));
89 imgf.setSize(d); 92 imgf.setSize(d);
93 if (imgfs != null) { 96 if (imgfs != null) {
94 imgfs.setAspect(d); 97 imgfs.setAspect(d);
95 } 98 }
96 // dispose the reader to free resources 99 // dispose the reader to free resources
97 reader.dispose(); 100 reader.dispose();
101 raf.close();
98 } 102 }
99 return true; 103 return true;
100 } 104 }
101 105
102 } 106 }