6 * Copyright: Copyright (c) 2001
13 import java.util.Vector;
14 import javax.media.jai.*;
15 import com.sun.media.jai.codec.*;
16 import java.awt.image.renderable.ParameterBlock;
18 public class WebdbImage
21 // default values for scaling
22 private int maxIconSize=120;
23 private int maxImageSize=640;
25 private byte[] iconData;
26 private byte[] imageData;
27 private int iconWidth;
28 private int iconHeight;
30 // internal representation of the image
31 private PlanarImage planarImage;
38 public WebdbImage(byte[] image, String type)
41 planarImage = JAI.create("stream",new ByteArraySeekableStream(image));
46 public WebdbImage(byte[] image, String type, int iconMax)
50 planarImage = JAI.create("stream",new ByteArraySeekableStream(image));
55 public WebdbImage(byte[] image, String type, int iconMax, int imageMax)
59 maxImageSize=imageMax;
60 planarImage = JAI.create("stream",new ByteArraySeekableStream(image));
66 public int getIconWidth() throws IOException {
67 if (iconData==null) scaleIcon();
71 public int getIconHeight() throws IOException {
72 if (iconData==null) scaleIcon();
76 public int getImageWidth() {
77 return (int)planarImage.getWidth();
80 public int getImageHeight() {
81 return (int)planarImage.getHeight();
84 public byte[] getImage() {
85 if (imageData==null) {
86 ByteArrayOutputStream outStream = new ByteArrayOutputStream();
87 JAI.create("encode", planarImage, outStream, _type, null);
88 imageData = outStream.toByteArray();
93 public byte[] getIcon()
96 if (iconData == null) scaleIcon();
100 private void scaleImage()
101 throws java.io.IOException
103 if (maxImageSize>0 && ( getImageHeight()> maxImageSize|| getImageWidth() >maxImageSize))
105 System.out.println("SCALE_IMAGE");
107 ParameterBlockJAI params = new ParameterBlockJAI("scale");
108 params.addSource(planarImage);
109 if (getImageHeight() > getImageWidth())
110 scale = (float)maxImageSize / (float)getImageHeight();
112 scale = (float)maxImageSize / (float)getImageWidth();
114 params.setParameter("xScale", scale);
115 params.setParameter("yScale", scale);
116 params.setParameter("xTrans",0.0F);
117 params.setParameter("yTrans",0.0F);
118 params.setParameter("interpolation",new InterpolationBilinear());
119 planarImage = JAI.create("scale", params);
123 private void scaleIcon()
124 throws java.io.IOException
126 System.out.println("SCALE_ICON");
127 if (iconData==null) {
129 ParameterBlockJAI params = new ParameterBlockJAI("scale");
130 params.addSource(planarImage);
131 if (getImageHeight() > getImageWidth())
132 scale = (float)maxIconSize / (float)getImageHeight();
134 scale = (float)maxIconSize / (float)getImageWidth();
136 params.setParameter("xScale", scale);
137 params.setParameter("yScale", scale);
138 params.setParameter("xTrans",0.0F);
139 params.setParameter("yTrans",0.0F);
140 params.setParameter("interpolation",new InterpolationBilinear());
141 PlanarImage temp = JAI.create("scale", params);
142 ByteArrayOutputStream outStream = new ByteArrayOutputStream();
143 JAI.create("encode", temp, outStream, _type, null);
144 iconData = outStream.toByteArray();
145 iconWidth=temp.getWidth();
146 iconHeight=temp.getHeight();