Mercurial > hg > digilib-old
annotate common/src/main/java/digilib/image/ImageInfoDocuImage.java @ 924:6853c02b238b
fixed problem with progressive jpeg images
author | robcast |
---|---|
date | Fri, 16 Dec 2011 14:34:04 +0100 |
parents | 7779b37d1d05 |
children |
rev | line source |
---|---|
564 | 1 /** |
2 * | |
3 */ | |
4 package digilib.image; | |
5 | |
6 import java.io.IOException; | |
7 import java.io.RandomAccessFile; | |
8 | |
894 | 9 import org.devlib.schmidt.imageinfo.ImageInfo; |
564 | 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); |
924 | 42 String mt = iif.getMimeType(); |
43 // fix image/pjpeg | |
44 if (mt.equals("image/pjpeg")) { | |
45 mt = "image/jpeg"; | |
46 } | |
47 ii.setMimetype(mt); | |
819
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
48 logger.debug("image size: " + ii.getSize()); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
49 return ii; |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
50 } |
836 | 51 } catch (Exception e) { |
52 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
|
53 } finally { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
54 // close file, don't close stream(?) |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
55 if (raf != null) { |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
56 raf.close(); |
a23c4c15a6a8
clean up possible resource leaks. better behaviour with unknown image types.
robcast
parents:
596
diff
changeset
|
57 } |
590 | 58 } |
836 | 59 return null; |
564 | 60 } |
61 | |
62 | |
63 } |