Mercurial > hg > digilib-old
diff common/src/main/java/digilib/image/ImageInfoDocuImage.java @ 903:7779b37d1d05
refactored into maven modules per servlet type.
can build servlet-api 2.3 and 3.0 via profile now!
author | robcast |
---|---|
date | Tue, 26 Apr 2011 20:24:31 +0200 |
parents | servlet/src/main/java/digilib/image/ImageInfoDocuImage.java@6e15201cdce9 |
children | 6853c02b238b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/src/main/java/digilib/image/ImageInfoDocuImage.java Tue Apr 26 20:24:31 2011 +0200 @@ -0,0 +1,58 @@ +/** + * + */ +package digilib.image; + +import java.io.IOException; +import java.io.RandomAccessFile; + +import org.devlib.schmidt.imageinfo.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; + } + + +}