Mercurial > hg > digilib-old
view servlet/src/digilib/image/ImageInfoDocuImage.java @ 836:abd5513ef7b2 stream
fixed NPE in ImageInfoDocuImage.identify()
author | robcast |
---|---|
date | Tue, 01 Mar 2011 17:38:46 +0100 |
parents | a23c4c15a6a8 |
children |
line wrap: on
line source
/** * */ 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; } }