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