# HG changeset patch # User robcast # Date 1088504210 -7200 # Node ID c4ee5f0c3a77842fb79e7dbc3ffa9100d226e09f # Parent e6183215c9d95bb8638fd884a14d93a2973363c5 servlet version 1.18b12 - small fix in DocuDirectory.get diff -r e6183215c9d9 -r c4ee5f0c3a77 servlet/src/digilib/image/ImageLoaderDocuImage.java --- a/servlet/src/digilib/image/ImageLoaderDocuImage.java Tue Jun 29 12:09:53 2004 +0200 +++ b/servlet/src/digilib/image/ImageLoaderDocuImage.java Tue Jun 29 12:16:50 2004 +0200 @@ -37,6 +37,7 @@ import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; +import javax.imageio.stream.FileImageInputStream; import javax.imageio.stream.ImageInputStream; import digilib.io.FileOpException; @@ -125,11 +126,11 @@ } //System.gc(); RandomAccessFile rf = new RandomAccessFile(f.getFile(), "r"); - ImageInputStream istream = ImageIO.createImageInputStream(rf); - //Iterator readers = ImageIO.getImageReaders(istream); + ImageInputStream istream = new FileImageInputStream(rf); + Iterator readers = ImageIO.getImageReaders(istream); //String ext = f.getName().substring(f.getName().lastIndexOf('.')+1); //Iterator readers = ImageIO.getImageReadersBySuffix(ext); - Iterator readers = ImageIO.getImageReadersByMIMEType(f.getMimetype()); + //Iterator readers = ImageIO.getImageReadersByMIMEType(f.getMimetype()); reader = (ImageReader) readers.next(); /* are there more readers? */ logger.debug("ImageIO: this reader: " + reader.getClass()); @@ -156,7 +157,9 @@ // set up reader parameters ImageReadParam readParam = reader.getDefaultReadParam(); readParam.setSourceRegion(region); - readParam.setSourceSubsampling(prescale, prescale, 0, 0); + if (prescale > 1) { + readParam.setSourceSubsampling(prescale, prescale, 0, 0); + } // read image logger.debug("loading.."); img = reader.read(0, readParam); @@ -228,14 +231,16 @@ renderHint); BufferedImage scaledImg = null; // enforce destination image type (*Java2D BUG*) - if (quality > 0) { + int type = img.getType(); + // FIXME: which type would be best? + if ((quality > 0)&&(type != 0)) { logger.debug("creating destination image"); Rectangle2D dstBounds = scaleOp.getBounds2D(img); scaledImg = new BufferedImage( (int) dstBounds.getWidth(), (int) dstBounds.getHeight(), - img.getType()); + type); } logger.debug("scaling..."); scaledImg = scaleOp.filter(img, scaledImg); @@ -259,6 +264,7 @@ logger.debug("blur: " + radius); // minimum radius is 2 int klen = Math.max(radius, 2); + // FIXME: use constant kernels for most common sizes int ksize = klen * klen; // kernel is constant 1/k float f = 1f / ksize; diff -r e6183215c9d9 -r c4ee5f0c3a77 servlet/src/digilib/image/ImageLoaderImageInfoDocuInfo.java --- a/servlet/src/digilib/image/ImageLoaderImageInfoDocuInfo.java Tue Jun 29 12:09:53 2004 +0200 +++ b/servlet/src/digilib/image/ImageLoaderImageInfoDocuInfo.java Tue Jun 29 12:16:50 2004 +0200 @@ -1,50 +1,45 @@ -/* ImageLoaderImageInfoDocuInfo -- DocuInfo implementation using ImageInfo and ImageLoader API - - 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 - +/* + * ImageLoaderImageInfoDocuInfo -- DocuInfo implementation using ImageInfo and + * ImageLoader API + * + * 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 11.06.2003 */ package digilib.image; - import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Iterator; - import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; - import org.apache.log4j.Logger; import org.marcoschmidt.image.ImageInfo; - import digilib.io.FileOpException; import digilib.io.FileOps; import digilib.io.ImageFile; import digilib.io.ImageFileset; - /** * @author casties - * + * */ public class ImageLoaderImageInfoDocuInfo implements DocuInfo { - private Logger logger = Logger.getLogger(this.getClass()); - /* check image size and type and store in ImageFile f */ public boolean checkFile(ImageFile imgf) throws IOException { // fileset to store the information @@ -59,11 +54,10 @@ iif.setInput(raf); iif.setCollectComments(false); iif.setDetermineImageNumber(false); - logger.debug("identifying (ImageInfo) "+f); + logger.debug("identifying (ImageInfo) " + f); // try with ImageInfo first if (iif.check()) { - ImageSize d = - new ImageSize(iif.getWidth(), iif.getHeight()); + ImageSize d = new ImageSize(iif.getWidth(), iif.getHeight()); imgf.setSize(d); imgf.setMimetype(iif.getMimeType()); if (imgfs != null) { @@ -71,24 +65,24 @@ } raf.close(); } else { - logger.debug("identifying (ImageIO) "+f); - // else use ImageReader + logger.debug("identifying (ImageIO) " + f); + /* + * else use ImageReader + */ ImageInputStream istream = ImageIO.createImageInputStream(raf); Iterator readers = ImageIO.getImageReaders(istream); - //String ext = f.getName().substring(f.getName().lastIndexOf('.')+1); - //Iterator readers = ImageIO.getImageReadersBySuffix(ext); - if (! readers.hasNext()) { + if ((readers == null) || (!readers.hasNext())) { throw new FileOpException("ERROR: unknown image file format!"); } ImageReader reader = (ImageReader) readers.next(); /* are there more readers? */ logger.debug("ImageIO: this reader: " + reader.getClass()); while (readers.hasNext()) { - logger.debug("ImageIO: next reader: " + readers.next().getClass()); + logger.debug("ImageIO: next reader: " + + readers.next().getClass()); } reader.setInput(istream); - ImageSize d = - new ImageSize(reader.getWidth(0), reader.getHeight(0)); + ImageSize d = new ImageSize(reader.getWidth(0), reader.getHeight(0)); imgf.setSize(d); String t = reader.getFormatName(); t = FileOps.mimeForFile(f); @@ -100,7 +94,8 @@ reader.dispose(); raf.close(); } + logger.debug("image size: " + imgf.getSize().getWidth() + "x" + + imgf.getSize().getHeight()); return true; } - -} +} \ No newline at end of file diff -r e6183215c9d9 -r c4ee5f0c3a77 servlet/src/digilib/image/JAIImageLoaderDocuImage.java --- a/servlet/src/digilib/image/JAIImageLoaderDocuImage.java Tue Jun 29 12:09:53 2004 +0200 +++ b/servlet/src/digilib/image/JAIImageLoaderDocuImage.java Tue Jun 29 12:16:50 2004 +0200 @@ -31,11 +31,12 @@ import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; +import javax.imageio.stream.FileImageInputStream; import javax.imageio.stream.ImageInputStream; import javax.media.jai.JAI; +import digilib.io.FileOpException; import digilib.io.ImageFile; -import digilib.io.FileOpException; /** DocuImage implementation using the Java Advanced Imaging API and the ImageLoader * API of Java 1.4. @@ -95,9 +96,9 @@ logger.debug("preloadImage: "+f.getFile()); //System.gc(); RandomAccessFile rf = new RandomAccessFile(f.getFile(), "r"); - ImageInputStream istream = ImageIO.createImageInputStream(rf); - //Iterator readers = ImageIO.getImageReaders(istream); - Iterator readers = ImageIO.getImageReadersByMIMEType(f.getMimetype()); + ImageInputStream istream = new FileImageInputStream(rf); + Iterator readers = ImageIO.getImageReaders(istream); + //Iterator readers = ImageIO.getImageReadersByMIMEType(f.getMimetype()); reader = (ImageReader) readers.next(); if (reader == null) { throw new FileOpException("Unable to load File!"); diff -r e6183215c9d9 -r c4ee5f0c3a77 servlet/src/digilib/io/DocuDirectory.java --- a/servlet/src/digilib/io/DocuDirectory.java Tue Jun 29 12:09:53 2004 +0200 +++ b/servlet/src/digilib/io/DocuDirectory.java Tue Jun 29 12:16:50 2004 +0200 @@ -117,7 +117,7 @@ * @return */ public ImageFileset get(int index) { - if ((list == null) || (list[0] != null) || (index >= list[0].size())) { + if ((list == null) || (list[0] == null) || (index >= list[0].size())) { return null; } return (ImageFileset) list[0].get(index); diff -r e6183215c9d9 -r c4ee5f0c3a77 servlet/src/digilib/servlet/Scaler.java --- a/servlet/src/digilib/servlet/Scaler.java Tue Jun 29 12:09:53 2004 +0200 +++ b/servlet/src/digilib/servlet/Scaler.java Tue Jun 29 12:16:50 2004 +0200 @@ -59,7 +59,7 @@ public class Scaler extends HttpServlet { // digilib servlet version (for all components) - public static final String dlVersion = "1.18b9"; + public static final String dlVersion = "1.18b12"; // logger for accounting requests Logger accountlog = Logger.getLogger("account.request");