Mercurial > hg > digilib-old
diff common/src/main/java/digilib/io/ImageFile.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/io/ImageFile.java@ba1eb2d821a2 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/src/main/java/digilib/io/ImageFile.java Tue Apr 26 20:24:31 2011 +0200 @@ -0,0 +1,183 @@ +/* ImageFile.java -- digilib image file class. + + Digital Image Library servlet components + + Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de) + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + Please read license.txt for the full details. A copy of the GPL + may be found at http://www.gnu.org/copyleft/lgpl.html + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + * Created on 25.02.2003 + */ + +package digilib.io; + +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; + +import javax.imageio.stream.FileImageInputStream; +import javax.imageio.stream.ImageInputStream; + +import digilib.servlet.DigilibConfiguration; +import digilib.util.ImageSize; + +/** + * @author casties + */ +public class ImageFile extends ImageInput { + + // file + private File file = null; + // file name + private String name = null; + // parent directory + private Directory dir = null; + + /** Constructor with File. + * + * @param f + * @param parent + * @param dir + */ + public ImageFile(File f, ImageSet parent, Directory dir) { + this.file = f; + this.name = f.getName(); + this.parent = parent; + this.dir = dir; + } + + /** Constructor with filename (without path). + * @param fn + * @param parent + * @param dir + */ + public ImageFile(String fn, ImageSet parent, Directory dir) { + this.name = fn; + this.dir = dir; + this.file = new File(this.dir.getDir(), fn); + this.parent = parent; + } + + + /** Checks the image and sets size and type. + * + */ + public void check() { + if (pixelSize == null) { + try { + // use the configured toolkit to identify the image + DigilibConfiguration.identifyDocuImage(this); + } catch (IOException e) { + // nothing much to do... + } + } + } + + /* (non-Javadoc) + * @see digilib.io.ImageInput#getSize() + */ + @Override + public ImageSize getSize() { + check(); + return pixelSize; + } + + /* (non-Javadoc) + * @see digilib.io.ImageInput#getMimetype() + */ + @Override + public String getMimetype() { + check(); + return mimetype; + } + + /* (non-Javadoc) + * @see digilib.io.ImageInput#getAspect() + */ + @Override + public float getAspect() { + check(); + return (pixelSize != null) ? pixelSize.getAspect() : 0f; + } + + /** Returns the file name (without path). + * + * @return + */ + public String getName() { + return name; + } + + + /* (non-Javadoc) + * @see digilib.io.ImageInput#hasImageInputStream() + */ + @Override + public boolean hasImageInputStream() { + return true; + } + + /* (non-Javadoc) + * @see digilib.io.ImageInput#getImageInputStream() + */ + @Override + public ImageInputStream getImageInputStream() { + try { + RandomAccessFile rf = new RandomAccessFile(file, "r"); + return new FileImageInputStream(rf); + } catch (IOException e) { + // what now? + } + return null; + } + + /* (non-Javadoc) + * @see digilib.io.ImageInput#hasFile() + */ + @Override + public boolean hasFile() { + return true; + } + + /* (non-Javadoc) + * @see digilib.io.ImageInput#getFile() + */ + public File getFile() { + return file; + } + + /* (non-Javadoc) + * @see digilib.io.ImageInput#setSize(digilib.image.ImageSize) + */ + public void setSize(ImageSize imageSize) { + this.pixelSize = imageSize; + // pass on to parent + if (this.parent != null) { + this.parent.setAspect(imageSize); + } + } + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + // try to use File.toString + if (file != null) { + return file.toString(); + } + return super.toString(); + } + + +}