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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
564
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
1 /**
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
2 *
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
3 */
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
4 package digilib.image;
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
5
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
6 import java.io.IOException;
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
7 import java.io.RandomAccessFile;
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
8
894
6e15201cdce9 make servlet compile with maven
robcast
parents: 892
diff changeset
9 import org.devlib.schmidt.imageinfo.ImageInfo;
564
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
10
566
50f291d808b1 starting stream support
robcast
parents: 564
diff changeset
11 import digilib.io.ImageInput;
596
2b58d2783ef0 small cleanup
robcast
parents: 590
diff changeset
12 import digilib.util.ImageSize;
564
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
13
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
14 /** Simple abstract implementation of the <code>DocuImage</code> interface.
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
15 * Implements only the identify method using the ImageInfo class.
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
16 * @author casties
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
17 *
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
18 */
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
19 public abstract class ImageInfoDocuImage extends DocuImageImpl {
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
20
590
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
21 /* Check image size and type and store in ImageFile f */
588
aee436f0549d more work on stream input
robcast
parents: 566
diff changeset
22 public ImageInput identify(ImageInput ii) throws IOException {
590
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
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
6853c02b238b fixed problem with progressive jpeg images
robcast
parents: 903
diff changeset
42 String mt = iif.getMimeType();
6853c02b238b fixed problem with progressive jpeg images
robcast
parents: 903
diff changeset
43 // fix image/pjpeg
6853c02b238b fixed problem with progressive jpeg images
robcast
parents: 903
diff changeset
44 if (mt.equals("image/pjpeg")) {
6853c02b238b fixed problem with progressive jpeg images
robcast
parents: 903
diff changeset
45 mt = "image/jpeg";
6853c02b238b fixed problem with progressive jpeg images
robcast
parents: 903
diff changeset
46 }
6853c02b238b fixed problem with progressive jpeg images
robcast
parents: 903
diff changeset
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
abd5513ef7b2 fixed NPE in ImageInfoDocuImage.identify()
robcast
parents: 819
diff changeset
51 } catch (Exception e) {
abd5513ef7b2 fixed NPE in ImageInfoDocuImage.identify()
robcast
parents: 819
diff changeset
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
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
58 }
836
abd5513ef7b2 fixed NPE in ImageInfoDocuImage.identify()
robcast
parents: 819
diff changeset
59 return null;
564
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
60 }
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
61
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
62
4c51d71aef13 more reshuffling of classes
robcast
parents:
diff changeset
63 }