Mercurial > hg > digilib-old
view common/src/main/java/digilib/image/ImageInfoDocuImage.java @ 963:548988d9fad5
merge (sorry, with digilib-config.xml)
author | hertzhaft |
---|---|
date | Wed, 25 Jan 2012 16:16:59 +0100 |
parents | 6853c02b238b |
children |
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); String mt = iif.getMimeType(); // fix image/pjpeg if (mt.equals("image/pjpeg")) { mt = "image/jpeg"; } ii.setMimetype(mt); 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; } }