Mercurial > hg > digilib-old
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 } |