KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > info > magnolia > module > admininterface > pages > FileThumbnailDialogPage


1 package info.magnolia.module.admininterface.pages;
2
3 import info.magnolia.cms.beans.config.ContentRepository;
4 import info.magnolia.cms.core.HierarchyManager;
5 import info.magnolia.cms.core.NodeData;
6 import info.magnolia.context.MgnlContext;
7 import info.magnolia.module.admininterface.PageMVCHandler;
8
9 import java.awt.Graphics2D JavaDoc;
10 import java.awt.Image JavaDoc;
11 import java.awt.image.BufferedImage JavaDoc;
12 import java.io.BufferedOutputStream JavaDoc;
13 import java.io.IOException JavaDoc;
14 import java.io.InputStream JavaDoc;
15
16 import javax.imageio.ImageIO JavaDoc;
17 import javax.servlet.ServletOutputStream JavaDoc;
18 import javax.servlet.http.HttpServletRequest JavaDoc;
19 import javax.servlet.http.HttpServletResponse JavaDoc;
20
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 import com.sun.image.codec.jpeg.JPEGCodec;
25 import com.sun.image.codec.jpeg.JPEGEncodeParam;
26 import com.sun.image.codec.jpeg.JPEGImageEncoder;
27
28
29 /**
30  * @author Fabrizio Giustina
31  * @version $Id: FileThumbnailDialogPage.java 6341 2006-09-12 09:18:27Z philipp $
32  */

33 public class FileThumbnailDialogPage extends PageMVCHandler {
34
35     /**
36      * Stable serialVersionUID.
37      */

38     private static final long serialVersionUID = 222L;
39
40     /**
41      * Logger.
42      */

43     private static Logger log = LoggerFactory.getLogger(FileThumbnailDialogPage.class);
44
45     private String JavaDoc src;
46
47     private String JavaDoc size;
48
49     /**
50      * @param name
51      * @param request
52      * @param response
53      */

54     public FileThumbnailDialogPage(String JavaDoc name, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
55         super(name, request, response);
56     }
57
58     /**
59      * Setter for <code>size</code>.
60      * @param size The size to set.
61      */

62     public void setSize(String JavaDoc size) {
63         this.size = size;
64     }
65
66     /**
67      * Setter for <code>src</code>.
68      * @param src The src to set.
69      */

70     public void setSrc(String JavaDoc src) {
71         this.src = src;
72     }
73
74     /**
75      * @see info.magnolia.cms.servlets.MVCServletHandler#renderHtml(java.lang.String)
76      */

77     public void renderHtml(String JavaDoc view) throws IOException JavaDoc {
78
79         if (src == null) {
80             return;
81         }
82
83         response.setContentType("image/jpeg"); //$NON-NLS-1$
84

85         HierarchyManager hm = MgnlContext.getHierarchyManager(ContentRepository.WEBSITE);
86
87         InputStream JavaDoc in = null;
88
89         NodeData data;
90         try {
91             data = hm.getNodeData(src);
92             in = data.getValue().getStream();
93         }
94         catch (Exception JavaDoc e) {
95             log.error(e.getMessage(), e);
96             return;
97         }
98
99         Image JavaDoc image = ImageIO.read(in);
100
101         int thumbHeight;
102         int thumbWidth;
103         if (size != null) {
104             thumbHeight = image.getHeight(null);
105             thumbWidth = image.getWidth(null);
106         }
107         else {
108             thumbWidth = 150;
109             int w = image.getWidth(null);
110             int h = image.getHeight(null);
111             if (w == 0) {
112                 w = 1;
113             }
114             if (h == 0) {
115                 h = 1;
116             }
117
118             if (w > thumbWidth) {
119                 thumbHeight = thumbWidth * h / w;
120             }
121             else {
122                 thumbWidth = w;
123                 thumbHeight = h;
124             }
125
126             if (thumbHeight > 120) {
127                 thumbHeight = 100;
128                 thumbWidth = thumbHeight * w / h;
129             }
130
131         }
132
133         // draw original image to thumbnail image object and scale it to the new size on-the-fly
134
BufferedImage JavaDoc thumbImage = new BufferedImage JavaDoc(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
135         Graphics2D JavaDoc graphics2D = thumbImage.createGraphics();
136         // graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
137
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
138
139         ServletOutputStream JavaDoc sout = response.getOutputStream();
140         BufferedOutputStream JavaDoc output = new BufferedOutputStream JavaDoc(sout);
141         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
142         JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
143         param.setQuality(0.8f, false);
144
145         encoder.setJPEGEncodeParam(param);
146         encoder.encode(thumbImage);
147     }
148
149 }
150
Popular Tags