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 ; 10 import java.awt.Image ; 11 import java.awt.image.BufferedImage ; 12 import java.io.BufferedOutputStream ; 13 import java.io.IOException ; 14 import java.io.InputStream ; 15 16 import javax.imageio.ImageIO ; 17 import javax.servlet.ServletOutputStream ; 18 import javax.servlet.http.HttpServletRequest ; 19 import javax.servlet.http.HttpServletResponse ; 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 33 public class FileThumbnailDialogPage extends PageMVCHandler { 34 35 38 private static final long serialVersionUID = 222L; 39 40 43 private static Logger log = LoggerFactory.getLogger(FileThumbnailDialogPage.class); 44 45 private String src; 46 47 private String size; 48 49 54 public FileThumbnailDialogPage(String name, HttpServletRequest request, HttpServletResponse response) { 55 super(name, request, response); 56 } 57 58 62 public void setSize(String size) { 63 this.size = size; 64 } 65 66 70 public void setSrc(String src) { 71 this.src = src; 72 } 73 74 77 public void renderHtml(String view) throws IOException { 78 79 if (src == null) { 80 return; 81 } 82 83 response.setContentType("image/jpeg"); 85 HierarchyManager hm = MgnlContext.getHierarchyManager(ContentRepository.WEBSITE); 86 87 InputStream in = null; 88 89 NodeData data; 90 try { 91 data = hm.getNodeData(src); 92 in = data.getValue().getStream(); 93 } 94 catch (Exception e) { 95 log.error(e.getMessage(), e); 96 return; 97 } 98 99 Image 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 BufferedImage thumbImage = new BufferedImage (thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB); 135 Graphics2D graphics2D = thumbImage.createGraphics(); 136 graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null); 138 139 ServletOutputStream sout = response.getOutputStream(); 140 BufferedOutputStream output = new BufferedOutputStream (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 |