6 * Copyright: Copyright (c) 2001
13 //import java.awt.image.renderable.ParameterBlock;
14 import java.awt.Dimension;
15 import java.awt.Rectangle;
18 public class WebdbImage
21 private Logfile theLog = Logfile.getInstance(MirConfig.getPropWithHome("HTMLTemplateProcessor.Logfile"));
23 public final static int WEBDB_JPG=0;
24 public final static int WEBDB_GIF=1;
26 // default values for scaling
27 private int maxIconSize=120;
28 private int maxImageSize=640;
30 private byte[] iconData;
31 private byte[] imageData;
32 private int imageType;
33 private int iconWidth;
34 private int iconHeight;
36 // internal representation of the image
37 private MagickImage magickImage;
41 public WebdbImage(byte[] image, int type)
46 magickImage = new MagickImage(new ImageInfo(), image);
47 } catch (MagickException e) {theLog.printDebugInfo("fail: "+e.toString());}
51 public WebdbImage(byte[] image, int type, int iconMax)
57 magickImage = new MagickImage(new ImageInfo(), image);
58 } catch (MagickException e) {theLog.printDebugInfo("fail: "+e.toString());}
62 public WebdbImage(byte[] image, int type, int iconMax, int imageMax)
67 maxImageSize=imageMax;
69 magickImage = new MagickImage(new ImageInfo(), image);
70 } catch (MagickException e) {theLog.printDebugInfo("fail: "+e.toString());}
76 public int getIconWidth() throws IOException {
77 if (iconData==null) scaleIcon();
81 public int getIconHeight() throws IOException {
82 if (iconData==null) scaleIcon();
86 public int getImageWidth() {
88 return (int)magickImage.getDimension().getWidth();
89 } catch (MagickException e) { return -1;}
92 public int getImageHeight() {
95 return (int)magickImage.getDimension().getHeight();
96 } catch (MagickException e) { return -1;}
99 public byte[] getImage() {
100 if (imageData==null) {
102 ImageInfo imageInfo = new ImageInfo();
107 imageInfo.setMagickMember("JPG");
109 imageInfo.setMagickMember("JPG");
112 imageData = magickImage.imageToBlob(imageInfo);
113 } catch (MagickException e) {
114 theLog.printDebugInfo("getImage: magick "+e.toString());
120 public byte[] getIcon()
123 if (iconData == null) scaleIcon();
127 private void scaleImage()
128 throws java.io.IOException
130 if (maxImageSize>0 && ( getImageHeight()> maxImageSize|| getImageWidth() >maxImageSize))
133 if (getImageHeight() > getImageWidth())
134 scale = (float)maxImageSize / (float)getImageHeight();
136 scale = (float)maxImageSize / (float)getImageWidth();
139 magickImage = magickImage.scaleImage((int)scale*getImageWidth(), (int)scale*getImageHeight());
140 } catch (MagickException e) {}
144 private void scaleIcon()
145 throws java.io.IOException
147 if (iconData==null) {
149 if (getImageHeight() > getImageWidth())
150 scale = (float)maxIconSize / (float)getImageHeight();
152 scale = (float)maxIconSize / (float)getImageWidth();
155 MagickImage temp = magickImage.scaleImage((int)(scale*getImageWidth()), (int)(scale*getImageHeight()));
156 ImageInfo imageInfo = new ImageInfo();
161 imageInfo.setMagickMember("JPG");
163 imageInfo.setMagickMember("JPG");
165 iconWidth=(int)temp.getDimension().getWidth();
166 iconHeight=(int)temp.getDimension().getHeight();
167 // Put a black rectangle around the border
168 DrawInfo drawInfo = new DrawInfo(imageInfo);
169 drawInfo.setPrimitive("Rectangle 0 0 "+(iconWidth-1)+" "+(iconHeight-1));
170 drawInfo.setStroke(PixelPacket.queryColorDatabase("black"));
171 temp.drawImage(drawInfo);
172 iconData = temp.imageToBlob(imageInfo);
173 } catch (MagickException e) {}