X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2Fmir%2Fmisc%2FWebdbImage.java;h=4e61947b12a57abf39ad95119299e825fc3071e2;hb=d388c9c6286a9d9dda70e05535d5321fc20ef1c8;hp=99ed77f1dbf46437a7e58ea326ea3c76cf7ffa1b;hpb=d0a53f777c4cd00509d4ab4a5b53893e42007212;p=mir.git diff --git a/source/mir/misc/WebdbImage.java b/source/mir/misc/WebdbImage.java index 99ed77f1..4e61947b 100755 --- a/source/mir/misc/WebdbImage.java +++ b/source/mir/misc/WebdbImage.java @@ -1,3 +1,34 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir 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. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, The Mir-coders gives permission to link + * the code of this program with the com.oreilly.servlet library, any library + * licensed under the Apache Software License, The Sun (tm) Java Advanced + * Imaging library (JAI), The Sun JIMI library (or with modified versions of + * the above that use the same license as the above), and distribute linked + * combinations including the two. You must obey the GNU General Public + * License in all respects for all of the code used other than the above + * mentioned libraries. If you modify this file, you may extend this exception + * to your version of the file, but you are not obligated to do so. If you do + * not wish to do so, delete this exception statement from your version. + */ + package mir.misc; /** @@ -10,6 +41,7 @@ package mir.misc; */ import java.io.*; +import java.util.Vector; import javax.media.jai.*; import com.sun.media.jai.codec.*; import java.awt.image.renderable.ParameterBlock; @@ -17,53 +49,50 @@ import java.awt.image.renderable.ParameterBlock; public class WebdbImage { - // imageTypes - public final static int WEBDB_JPG=0; - public final static int WEBDB_GIF=1; - // default values for scaling private int maxIconSize=120; private int maxImageSize=640; private byte[] iconData; private byte[] imageData; - private int imageType; private int iconWidth; private int iconHeight; // internal representation of the image private PlanarImage planarImage; + // type of the image + private String _type; + // constructor - public WebdbImage(byte[] image, int type) + public WebdbImage(byte[] image, String type) throws IOException { - imageType=type; planarImage = JAI.create("stream",new ByteArraySeekableStream(image)); + _type = type; scaleImage(); } - public WebdbImage(byte[] image, int type, int iconMax) + public WebdbImage(byte[] image, String type, int iconMax) throws IOException { - imageType=type; maxIconSize=iconMax; planarImage = JAI.create("stream",new ByteArraySeekableStream(image)); + _type = type; scaleImage(); } - public WebdbImage(byte[] image, int type, int iconMax, int imageMax) + public WebdbImage(byte[] image, String type, int iconMax, int imageMax) throws IOException { - imageType=type; maxIconSize=iconMax; maxImageSize=imageMax; planarImage = JAI.create("stream",new ByteArraySeekableStream(image)); + _type = type; scaleImage(); } - // acc3ssor-methods public int getIconWidth() throws IOException { if (iconData==null) scaleIcon(); @@ -86,16 +115,7 @@ public class WebdbImage public byte[] getImage() { if (imageData==null) { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); - - switch (imageType) { - case WEBDB_JPG: - JAI.create("encode", planarImage, outStream, "JPEG", null);break; - case WEBDB_GIF: - JAI.create("encode", planarImage, outStream, "JPEG", null);break; - default: - System.err.println("unknown image format: " + imageType); - } - + JAI.create("encode", planarImage, outStream, _type, null); imageData = outStream.toByteArray(); } return imageData; @@ -113,39 +133,45 @@ public class WebdbImage { if (maxImageSize>0 && ( getImageHeight()> maxImageSize|| getImageWidth() >maxImageSize)) { + System.out.println("SCALE_IMAGE"); float scale; + ParameterBlockJAI params = new ParameterBlockJAI("scale"); + params.addSource(planarImage); if (getImageHeight() > getImageWidth()) - scale = (float)maxImageSize / (float)getImageHeight(); - else - scale = (float)maxImageSize / (float)getImageWidth(); - - InterpolationBilinear interp = new InterpolationBilinear(); - planarImage = JAI.create("scale", planarImage, scale, scale, 0.0F, 0.0F, interp); + scale = (float)maxImageSize / (float)getImageHeight(); + else + scale = (float)maxImageSize / (float)getImageWidth(); + + params.setParameter("xScale", scale); + params.setParameter("yScale", scale); + params.setParameter("xTrans",0.0F); + params.setParameter("yTrans",0.0F); + params.setParameter("interpolation",new InterpolationBilinear()); + planarImage = JAI.create("scale", params); } } private void scaleIcon() throws java.io.IOException { + System.out.println("SCALE_ICON"); if (iconData==null) { float scale; + ParameterBlockJAI params = new ParameterBlockJAI("scale"); + params.addSource(planarImage); if (getImageHeight() > getImageWidth()) - scale = (float)maxIconSize / (float)getImageHeight(); - else - scale = (float)maxIconSize / (float)getImageWidth(); - - InterpolationBilinear interp = new InterpolationBilinear(); - PlanarImage temp = JAI.create("scale", planarImage, scale, scale, 0.0F, 0.0F, interp); + scale = (float)maxIconSize / (float)getImageHeight(); + else + scale = (float)maxIconSize / (float)getImageWidth(); + + params.setParameter("xScale", scale); + params.setParameter("yScale", scale); + params.setParameter("xTrans",0.0F); + params.setParameter("yTrans",0.0F); + params.setParameter("interpolation",new InterpolationBilinear()); + PlanarImage temp = JAI.create("scale", params); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); - /** @todo gif */ - switch (imageType) { - case WEBDB_JPG: - JAI.create("encode", temp, outStream, "JPEG", null);break; - case WEBDB_GIF: - JAI.create("encode", temp, outStream, "JPEG", null);break; - default: - System.err.println("unknown image format: " + imageType); - } + JAI.create("encode", temp, outStream, _type, null); iconData = outStream.toByteArray(); iconWidth=temp.getWidth(); iconHeight=temp.getHeight();