1 package com.dotmarketing.util; 2 3 7 import java.awt.Color ; 8 import java.awt.Container ; 9 import java.awt.Graphics2D ; 10 import java.awt.Image ; 11 import java.awt.MediaTracker ; 12 import java.awt.RenderingHints ; 13 import java.awt.Toolkit ; 14 import java.awt.image.BufferedImage ; 15 import java.io.BufferedOutputStream ; 16 import java.io.File ; 17 import java.io.FileOutputStream ; 18 19 import com.sun.image.codec.jpeg.JPEGCodec; 20 import com.sun.image.codec.jpeg.JPEGEncodeParam; 21 import com.sun.image.codec.jpeg.JPEGImageEncoder; 22 23 public class Thumbnail { 24 25 private static int height = 100; 26 private static int width = 100; 27 28 public static void resizeImage(String imagePath, String imageName, String fileExtension, Color bgColor) { 29 resizeImage(imagePath,imageName,fileExtension,"_thumb",height,width, bgColor); 30 } 31 32 public static void resizeImage(String imagePath, String imageName, String fileExtension) { 33 Color bgColor = new Color (255,25,255); 34 resizeImage(imagePath,imageName,fileExtension,"_thumb",height,width, bgColor); 35 } 36 37 public static void resizeImage(String imagePath, String imageName, String fileExtension, String fileOutPutName, int h, int w, Color bgColor) { 38 39 try { 40 h = h > 0 ? h : height; 41 w = w > 0 ? w : width; 42 43 String fullImagePath = imagePath + imageName + "." + fileExtension; 45 Image image = Toolkit.getDefaultToolkit().createImage(fullImagePath); 46 Logger.debug(Thumbnail.class, "Thumbnail=" + imagePath + imageName + "." + fileExtension); 47 48 MediaTracker mediaTracker = new MediaTracker (new Container ()); 49 mediaTracker.addImage(image, 0); 50 mediaTracker.waitForID(0); 51 52 new File (imagePath + imageName + fileOutPutName + "." + fileExtension).delete(); 54 55 int thumbWidth = w; 57 int thumbHeight = h; 58 double thumbRatio = (double)thumbWidth / (double)thumbHeight; 59 int imageWidth = image.getWidth(null); 60 int imageHeight = image.getHeight(null); 61 62 if ((imageWidth < w) && (imageHeight < h)) { 63 thumbHeight = imageHeight; 64 thumbWidth = imageWidth; 65 } 66 else { 67 double imageRatio = (double)imageWidth / (double)imageHeight; 68 if (thumbRatio < imageRatio) { 69 thumbHeight = (int)Math.ceil((thumbWidth / imageRatio)); 70 } else { 71 thumbWidth = (int)(thumbHeight * imageRatio); 72 } 73 } 74 BufferedImage bgImage = new BufferedImage (w,h, BufferedImage.TYPE_INT_RGB); 77 78 Graphics2D g = bgImage.createGraphics(); 79 g.setColor(bgColor); 80 g.fillRect(0,0,w,h); 81 82 BufferedImage thumbImage = new BufferedImage (thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB); 83 85 Graphics2D graphics2D = thumbImage.createGraphics(); 86 graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC); 87 graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY); 88 graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF); 89 graphics2D.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY); 90 graphics2D.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); 91 graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight , bgColor, null); 92 graphics2D.dispose(); 93 94 int offsetX = (w - thumbImage.getWidth()) / 2; 96 int offsetY = (h - thumbImage.getHeight()) / 2; 97 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC); 98 g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY); 99 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF); 100 g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY); 101 g.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); 102 g.drawImage(thumbImage, null, offsetX, offsetY); 103 g.dispose(); 104 105 106 BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream (imagePath + imageName + fileOutPutName + "." + fileExtension)); 108 Logger.debug(Thumbnail.class, "Output image=" + imagePath + imageName + fileOutPutName + "." + fileExtension); 109 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 110 JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bgImage); 111 int quality = Integer.parseInt("100"); 112 quality = Math.max(0, Math.min(quality, 100)); 113 param.setQuality((float)quality / 100.0f, false); 114 encoder.setJPEGEncodeParam(param); 115 encoder.encode(bgImage); 116 out.close(); 117 Logger.debug(Thumbnail.class, "Done."); 118 } 119 catch (Exception e) { 120 Logger.error(Thumbnail.class, "e:" + e); 121 e.printStackTrace(); 122 } 123 124 } 125 126 136 public static void resizeImageWithNoBox(String imagePath, String imageName, String fileExtension, String fileOutPutName, int h, int w, Color bgColor) { 137 138 try { 139 h = h > 0 ? h : height; 140 w = w > 0 ? w : width; 141 142 String fullImagePath = imagePath + imageName + "." + fileExtension; 144 Image image = Toolkit.getDefaultToolkit().createImage(fullImagePath); 145 Logger.debug(Thumbnail.class, "Thumbnail=" + imagePath + imageName + "." + fileExtension); 146 147 MediaTracker mediaTracker = new MediaTracker (new Container ()); 148 mediaTracker.addImage(image, 0); 149 mediaTracker.waitForID(0); 150 151 new File (imagePath + fileOutPutName + ".png").delete(); 153 154 156 BufferedImage bgImage = new BufferedImage (w,h, BufferedImage.TYPE_INT_RGB); 159 160 Graphics2D g = bgImage.createGraphics(); 161 g.setColor(bgColor); 162 g.fillRect(0,0,w,h); 163 164 BufferedImage thumbImage = new BufferedImage (w, h, BufferedImage.TYPE_INT_RGB); 165 166 Graphics2D graphics2D = thumbImage.createGraphics(); 167 graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC); 168 graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY); 169 graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF); 170 graphics2D.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY); 171 graphics2D.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); 172 graphics2D.drawImage(image, 0, 0, w, h , bgColor, null); 173 graphics2D.dispose(); 174 175 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC); 177 g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY); 178 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF); 179 g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY); 180 g.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); 181 g.drawImage(thumbImage, null, 0, 0); 182 g.dispose(); 183 184 185 BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream (imagePath + fileOutPutName + ".png")); 187 Logger.debug(Thumbnail.class, "Output image=" + imagePath + fileOutPutName + ".png"); 188 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 189 JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bgImage); 190 int quality = Integer.parseInt("100"); 191 quality = Math.max(0, Math.min(quality, 100)); 192 param.setQuality((float)quality / 100.0f, false); 193 encoder.setJPEGEncodeParam(param); 194 encoder.encode(bgImage); 195 out.close(); 196 Logger.debug(Thumbnail.class, "Done."); 197 } 198 catch (Exception e) { 199 Logger.error(Thumbnail.class, "e:" + e); 200 e.printStackTrace(); 201 } 202 203 } 204 } 205
| Popular Tags
|