Mercurial > hg > digilib-old
annotate servlet/src/digilib/image/ImageInfoDocuImage.java @ 836:abd5513ef7b2 stream
fixed NPE in ImageInfoDocuImage.identify()
author | robcast |
---|---|
date | Tue, 01 Mar 2011 17:38:46 +0100 |
parents | a23c4c15a6a8 |
children |
rev | line source |
---|---|
564 | 1 /** |
2 * | |
3 */ | |
4 package digilib.image; | |
5 | |
6 import java.io.IOException; | |
7 import java.io.RandomAccessFile; | |
8 | |
9 import org.marcoschmidt.image.ImageInfo; | |
10 | |
566 | 11 import digilib.io.ImageInput; |
596 | 12 import digilib.util.ImageSize; |
564 | 13 |
14 /** Simple abstract implementation of the <code>DocuImage</code> interface. | |
15 * Implements only the identify method using the ImageInfo class. | |
16 * @author casties | |
17 * | |
18 */ | |
19 public abstract class ImageInfoDocuImage extends DocuImageImpl { | |
20 | |
590 | 21 /* Check image size and type and store in ImageFile f */ |
588 | 22 public ImageInput identify(ImageInput ii) throws IOException { |
590 | 23 logger.debug("identifying (ImageInfo) " + ii); |
819
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
24 RandomAccessFile raf = null; |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
25 try { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
26 // set up ImageInfo object |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
27 ImageInfo iif = new ImageInfo(); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
28 if (ii.hasImageInputStream()) { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
29 iif.setInput(ii.getImageInputStream()); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
30 } else if (ii.hasFile()) { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
31 raf = new RandomAccessFile(ii.getFile(), "r"); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
32 iif.setInput(raf); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
33 } else { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
34 return null; |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
35 } |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
36 iif.setCollectComments(false); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
37 iif.setDetermineImageNumber(false); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
38 // try with ImageInfo first |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
39 if (iif.check()) { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
40 ImageSize d = new ImageSize(iif.getWidth(), iif.getHeight()); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
41 ii.setSize(d); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
42 ii.setMimetype(iif.getMimeType()); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
43 logger.debug("image size: " + ii.getSize()); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
44 return ii; |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
45 } |
836 | 46 } catch (Exception e) { |
47 logger.debug("ImageInfoDocuimage unable to identify.", e); | |
819
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
48 } finally { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
49 // close file, don't close stream(?) |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
50 if (raf != null) { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
51 raf.close(); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
52 } |
590 | 53 } |
836 | 54 return null; |
564 | 55 } |
56 | |
57 | |
58 } |