diff servlet/src/main/java/digilib/image/ImageInfoDocuImage.java @ 892:ba1eb2d821a2 mvnify

rearrange sources to maven directory standard
author robcast
date Tue, 19 Apr 2011 18:44:25 +0200
parents servlet/src/digilib/image/ImageInfoDocuImage.java@abd5513ef7b2
children 6e15201cdce9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/servlet/src/main/java/digilib/image/ImageInfoDocuImage.java	Tue Apr 19 18:44:25 2011 +0200
@@ -0,0 +1,58 @@
+/**
+ * 
+ */
+package digilib.image;
+
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+import org.marcoschmidt.image.ImageInfo;
+
+import digilib.io.ImageInput;
+import digilib.util.ImageSize;
+
+/** Simple abstract implementation of the <code>DocuImage</code> interface.
+ * Implements only the identify method using the ImageInfo class.
+ * @author casties
+ *
+ */
+public abstract class ImageInfoDocuImage extends DocuImageImpl {
+
+    /* Check image size and type and store in ImageFile f */
+    public ImageInput identify(ImageInput ii) throws IOException {
+        logger.debug("identifying (ImageInfo) " + ii);
+        RandomAccessFile raf = null;
+        try {
+            // set up ImageInfo object
+            ImageInfo iif = new ImageInfo();
+            if (ii.hasImageInputStream()) {
+                iif.setInput(ii.getImageInputStream());
+            } else if (ii.hasFile()) {
+                raf = new RandomAccessFile(ii.getFile(), "r");
+                iif.setInput(raf);
+            } else {
+                return null;
+            }
+            iif.setCollectComments(false);
+            iif.setDetermineImageNumber(false);
+            // try with ImageInfo first
+            if (iif.check()) {
+                ImageSize d = new ImageSize(iif.getWidth(), iif.getHeight());
+                ii.setSize(d);
+                ii.setMimetype(iif.getMimeType());
+                logger.debug("image size: " + ii.getSize());
+                return ii;
+            }
+        } catch (Exception e) {
+            logger.debug("ImageInfoDocuimage unable to identify.", e);
+        } finally {
+            // close file, don't close stream(?)
+            if (raf != null) {
+                raf.close();
+            }
+        }
+        return null;
+    }
+        
+
+}