Mercurial > hg > digilib-old
view common/src/main/java/digilib/image/ImageInfoDocuImage.java @ 907:52598b5e5518
make DigilibRequest usable for stream input.
author | robcast |
---|---|
date | Tue, 10 May 2011 09:56:43 +0200 |
parents | 7779b37d1d05 |
children | 6853c02b238b |
line wrap: on
line source
/** * */ 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; } }