struts2 using kindeditor upload pictures (including jmagic compressed images)

Project uses a kindeditor3.4

UploadContentImgAction

  1 @SuppressWarnings("serial")
  2 @ParentPackage("control-center")
  3 public class UploadContentImgAction extends BaseAction {
  4         private File up;
  5         private String upFileName;
  6         private String upContentType;
  7         private String fileDir = "uploads/articleContentImg";
  8         private String imgTitle;
  9         private String align;
 10         private int imgWidth;
 11         private int imgHeight;
 12
 13         /**
 14          * kindeditor Picture upload
 15          * @return
 16          * @throws Exception
 17          */
 18         @Action("kindeditorImgUpload")
 19         public String kindeditorImgUpload() throws Exception {
 20                 // You can only upload pictures
 21                 try {
 22                         if(!validatePostfix(upFileName)) {
 23                                 return "error";
 24                         }
 25                         User user = (User)getSession().get("user");
 26                         String fileRealDir = getServletContext().getRealPath(fileDir);
 27                         File file = up;
 28                         String fileRealName = createfilename(user.getUserId());
 29                         String fileName = fileRealName + upFileName.substring(upFileName.lastIndexOf(".")).toLowerCase();
 30                         File newFile = new File(fileRealDir, fileName);
 31                         FileUtils.copyFile(file, newFile);
 32                         // Compress pictures
 33                         ImageUtil.resize(newFile.getPath(), newFile.getPath(), 500);
 34                         String id = "contentId";
 35                         String url = "/" + fileDir + "/" + fileName;
 36                         String border = "0";
 37
 38                         String result = "<script type=‘text/javascript‘>parent.KE.plugin[‘image‘].insert(‘" + id + "‘,‘" + url + "‘,‘" + imgTitle + "‘,‘" + imgHeight + "‘,‘" + imgHeight + "‘,‘" + border + "‘,‘" + align + "‘);</script>";
 39
 40                         getHttpServletResponse().getWriter().write(result);
 41                 } catch (RuntimeException e) {
 42                         // TODO Auto-generated catch block
 43                         e.printStackTrace();
 44                 }
 45                 return null;
 46         }
 47         /**
 48          *  The file name generation  :  The current time  +  Random number  +  User ID
 49          */
 50         private String createfilename(int userId) {
 51                 StringBuilder result = new StringBuilder();
 52                 //  Get the local time of the current
 53                 String now = DateUtil.getLongStrFromDate(new Date());
 54                 //  In 1000W of randomly generated numbers
 55                 int rand = new Random().nextInt(9999999);
 56                 //  Get rid of  -  Get rid of  :  Get rid of the whitespace  , Returns the
 57                 result.append(now.replace("-", "").replace(":", "").replace(" ", "")).append("_").append(rand).append("_").append(userId);
 58                 return result.toString();
 59         }
 60         /**
 61          *  Verify that the suffix name should obtain from the configuration file
 62          */
 63         public boolean validatePostfix(String filename) {
 64                 //  Defines the type of the uploaded file
 65                 List<String> fileTypes = new ArrayList<String>();
 66
 67                 //  Picture
 68                 fileTypes.add("jpg");
 69                 fileTypes.add("jpeg");
 70                 fileTypes.add("bmp");
 71                 fileTypes.add("gif");
 72                 fileTypes.add("png");
 73
 74                 //  Get file mantissa and lowercase
 75                 String postfix = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
 76                 return fileTypes.contains(postfix) ? true : false;
 77         }
 78         public File getUp() {
 79                 return up;
 80         }
 81
 82         public void setUp(File up) {
 83                 this.up = up;
 84         }
 85
 86         public String getUpFileName() {
 87                 return upFileName;
 88         }
 89
 90         public void setUpFileName(String upFileName) {
 91                 this.upFileName = upFileName;
 92         }
 93
 94         public String getUpContentType() {
 95                 return upContentType;
 96         }
 97
 98         public void setUpContentType(String upContentType) {
 99                 this.upContentType = upContentType;
100         }
101
102         public String getImgTitle() {
103                 return imgTitle;
104         }
105
106         public void setImgTitle(String imgTitle) {
107                 this.imgTitle = imgTitle;
108         }
109
110         public int getImgWidth() {
111                 return imgWidth;
112         }
113
114         public void setImgWidth(int imgWidth) {
115                 this.imgWidth = imgWidth;
116         }
117
118         public int getImgHeight() {
119                 return imgHeight;
120         }
121
122         public void setImgHeight(int imgHeight) {
123                 this.imgHeight = imgHeight;
124         }
125
126         public String getAlign() {
127                 return align;
128         }
129
130         public void setAlign(String align) {
131                 this.align = align;
132         }
133 }

ImageUitl

  1 package com.yancheng.myframe.util;
  2
  3 import java.awt.AlphaComposite;
  4 import java.awt.Color;
  5 import java.awt.Font;
  6 import java.awt.Graphics2D;
  7 import java.awt.Image;
  8 import java.awt.geom.AffineTransform;
  9 import java.awt.image.AffineTransformOp;
 10 import java.awt.image.BufferedImage;
 11 import java.io.File;
 12 import java.io.FileOutputStream;
 13 import java.io.IOException;
 14 import javax.imageio.ImageIO;
 15 import magick.ImageInfo;
 16 import magick.MagickImage;
 17 import com.sun.image.codec.jpeg.JPEGCodec;
 18 import com.sun.image.codec.jpeg.JPEGImageEncoder;
 19
 20 /**
 21  * @author
 22  *
 23  */
 24 public class ImageUtil {
 25
 26         public final static int PHOTO_RATIO = 800; // Scaling the picture coefficient
 27         static{
 28                 System.setProperty("jmagick.systemclassloader", "no");
 29         }
 30         /**
 31          *  Picture watermark
 32          *
 33          * @param pressImg  Watermark picture
 34          * @param targetImg  Target picture
 35          * @param x  Fixed value defaults in the Middle
 36          * @param y  Fixed value defaults in the Middle
 37          * @param alpha  Transparency
 38          */
 39         public final static void pressImage(String pressImg, String targetImg,
 40                         int x, int y, float alpha) {
 41                 try {
 42                         File img = new File(targetImg);
 43                         Image src = ImageIO.read(img);
 44                         int wideth = src.getWidth(null);
 45                         int height = src.getHeight(null);
 46                         BufferedImage image = new BufferedImage(wideth, height,
 47                                         BufferedImage.TYPE_INT_RGB);
 48                         Graphics2D g = image.createGraphics();
 49                         g.drawImage(src, 0, 0, wideth, height, null);
 50                         //  The watermark file
 51                         Image src_biao = ImageIO.read(new File(pressImg));
 52                         int wideth_biao = src_biao.getWidth(null);
 53                         int height_biao = src_biao.getHeight(null);
 54                         g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
 55                                         alpha));
 56                         g.drawImage(src_biao, (wideth - wideth_biao) / 2,
 57                                         (height - height_biao) / 2, wideth_biao, height_biao, null);
 58                         //  At the end of the watermark file
 59                         g.dispose();
 60                         ImageIO.write((BufferedImage) image, "jpg", img);
 61                 } catch (Exception e) {
 62                         e.printStackTrace();
 63                 }
 64         }
 65
 66         /**
 67          *  Text watermark
 68          *
 69          * @param pressText  Watermark text
 70          * @param targetImg  Target picture
 71          * @param fontName  Font name
 72          * @param fontStyle  Font style
 73          * @param color  Font color
 74          * @param fontSize  Font size
 75          * @param x  Correction value
 76          * @param y  Correction value
 77          * @param alpha  Transparency
 78          */
 79         public static void pressText(String pressText, String targetImg, String fontName, int fontStyle, Color color, int fontSize, int x,
 80                         int y, float alpha) {
 81                 try {
 82                         File img = new File(targetImg);
 83                         Image src = ImageIO.read(img);
 84                         int width = src.getWidth(null);
 85                         int height = src.getHeight(null);
 86                         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
 87                         Graphics2D g = image.createGraphics();
 88                         g.drawImage(src, 0, 0, width, height, null);
 89                         g.setColor(color);
 90                         g.setFont(new Font(fontName, fontStyle, fontSize));
 91                         g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
 92                         g.drawString(pressText, (width - (getLength(pressText) * fontSize)) / 2 + x, (height - fontSize) / 2 + y);
 93                         g.dispose();
 94                         ImageIO.write((BufferedImage) image, "jpg", img);
 95                 } catch (Exception e) {
 96                         e.printStackTrace();
 97                 }
 98         }
 99
100         /**
101          *  Zoom effects poor ps  : Graphics The following are the AffineTransform under
102          *  Zoom is for  " Graphics  " Instead of  " Image  " So after the picture is not clear
103          * @param filePath  The path to the picture
104          * @param height  Height
105          * @param width  Width
106          * @param bb  The ratio is not environmentally friendly farming is required when the
107          */
108         public static void resizeImgcale(String filePath, int height, int width, boolean bb) {
109                 try {
110                         double ratio = 0.0; //  Scaling
111                         File f = new File(filePath);
112                         BufferedImage bi = ImageIO.read(f);
113                         Image itemp = bi.getScaledInstance(width, height, bi.SCALE_SMOOTH);
114                         //  Calculate the ratio
115                         if ((bi.getHeight() > height) || (bi.getWidth() > width)) {
116                                 if (bi.getHeight() > bi.getWidth()) {
117                                         ratio = (new Integer(height)).doubleValue() / bi.getHeight();
118                                 } else {
119                                         ratio = (new Integer(width)).doubleValue() / bi.getWidth();
120                                 }
121                                 AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null);
122                                 itemp = op.filter(bi, null);
123                         }
124                         if (bb) {
125                                 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
126                                 Graphics2D g = image.createGraphics();
127                                 g.setColor(Color.white);
128                                 g.fillRect(0, 0, width, height);
129                                 if (width == itemp.getWidth(null))
130                                         g.drawImage(itemp, 0, (height - itemp.getHeight(null)) / 2,
131                                                         itemp.getWidth(null), itemp.getHeight(null),
132                                                         Color.white, null);
133                                 else
134                                         g.drawImage(itemp, (width - itemp.getWidth(null)) / 2, 0,
135                                                         itemp.getWidth(null), itemp.getHeight(null),
136                                                         Color.white, null);
137                                 g.dispose();
138                                 itemp = image;
139                         }
140                         ImageIO.write((BufferedImage) itemp, "jpg", f);
141                 } catch (IOException e) {
142                         e.printStackTrace();
143                 }
144         }
145
146         /**
147          *  Calculates the length of the word
148          *
149          * @param text
150          * @return
151          */
152         public static int getLength(String text) {
153                 int length = 0;
154                 for (int i = 0; i < text.length(); i++) {
155                         if (new String(text.charAt(i) + "").getBytes().length > 1) {
156                                 length += 2;
157                         } else {
158                                 length += 1;
159                         }
160                 }
161                 return length / 2;
162         }
163
164         /**
165          *  Compress pictures
166          *
167          * @param imgsrc  Source file
168          * @param imgdist  The target file
169          * @param widthdist  Width
170          * @param heightdist  High
171          */
172         public static void resizeImg(String imgsrc, String imgdist, int widthdist, int heightdist) {
173                 try {
174                         File srcfile = new File(imgsrc);
175                         if (!srcfile.exists()) {
176                                 return;
177                         }
178                         Image src = javax.imageio.ImageIO.read(srcfile);
179                         BufferedImage tag = new BufferedImage(widthdist, heightdist, BufferedImage.TYPE_INT_RGB);
180                         /*
181                          * SCALE_SMOOTH Smooth SCALE: dimensions  _AREA_AVERAGING : Scale area average SCALE  _FAST : Scale fast
182                          * SCALE_REPLICATE :-Scale replication
183                          */
184                         tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist, Image.SCALE_SMOOTH), 0, 0, null);
185                         FileOutputStream out = new FileOutputStream(imgdist);
186                         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
187                         encoder.encode(tag);
188                         out.close();
189                 } catch (IOException ex) {
190                         ex.printStackTrace();
191                 }
192         }
193
194         /**
195          *  Picture compression
196          * @param picFrom
197          * @param picTo
198          * @param widthdist
199          * @param heightdist
200          */
201         public static void resize(String picFrom, String picTo, int widthdist, int heightdist) {
202                 try {
203                         ImageInfo info = new ImageInfo(picFrom);
204                         MagickImage image = new MagickImage(new ImageInfo(picFrom));
205                         MagickImage scaled = image.scaleImage(widthdist, heightdist);//  The small size of the picture file  .
206                         scaled.setFileName(picTo);
207                         scaled.writeImage(info);
208                 } catch (Exception ex) {
209                         ex.printStackTrace();
210                 }
211         }
212
213         public static void resize(String picFrom, String picTo, int ratio) throws Exception {
214                 BufferedImage bi = ImageIO.read(new File(picFrom));
215                 // The original picture properties
216                 int srcWidth = bi.getWidth();
217                 int srcHeight = bi.getHeight();
218                 // Generate picture properties
219                 int newWidth = srcWidth;
220                 int newHeight = srcHeight;
221                 // If you exceed the maximum width or height is compressed
222                 if (srcWidth > ratio || newHeight > ratio) {
223                         // Generate picture width  , height Calculation
224                         if (srcWidth >= srcHeight) {
225                                 if (srcWidth < ratio) {
226                                         return;
227                                 }
228                                 newWidth = ratio;
229                                 newHeight = (int)(ratio * srcHeight / srcWidth);
230                         } else {
231                                 if (srcHeight < ratio) {
232                                         return;
233                                 }
234                                 newHeight = ratio;
235                                 newWidth = (int)(ratio * srcWidth / srcHeight);
236                         }
237                 }
238                 resize(picFrom, picTo, newWidth, newHeight);
239         }
240
241         public static void resize(String picFrom, String picTo) throws Exception {
242                 resize(picFrom, picTo, PHOTO_RATIO);
243         }
244
245         public static void main(String[] args) throws Exception {
246         //      resizeImg("d:/411766.jpg", "d:/411766_1.jpg", 800, 600);
247         //      resize("d:/test_4.jpg", "d:/test_4_2.jpg", 800);
248                 pressText(" Joy and the damned  ", "d:/411766.jpg", " Simplified Chinese  ", Font.ITALIC, Color.black, 90, 40, 80, 0.5f);
249         }
250
251 }
时间: 2024-10-23 03:19:50

struts2 using kindeditor upload pictures (including jmagic compressed images)的相关文章

KindEditor图片批量上传

KindEditor编辑器图片批量上传采用了上传插件swfupload.swf,所以后台上传文件方法返回格式应为JSONObject的String格式(注). JSONObject格式: JSONObject obj = new JSONObject(); obj.put("error", 0);//0:上传文件成功,1:上传文件失败 obj.put("url", "这里是图片路径,多张图采用英文逗号分隔“,”"); 代码示例: /** * 文件

Gulp.js简介

Gulp.js简介 我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必须反复执行的.如 新图片或修改后图片的压缩 去除调试语句如console,debugger 合并和压缩css和js 把更新的文件部署到服务器 你可能设想大家都会记住所有的这些操作,但总会有人忘记一两条.随着项目越来越大,上面的工作越来越浪费时间.只好设专人来完成这些枯燥的工作. 能不能让这些工作不用

[翻译]Gulp.js简介

我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必须反复执行的.如 新图片或修改后图片的压缩 去除调试语句如console,debugger 合并和压缩css和js 把更新的文件部署到服务器 你可能设想大家都会记住所有的这些操作,但总会有人忘记一两条.随着项目越来越大,上面的工作越来越浪费时间.只好设专人来完成这些枯燥的工作. 能不能让这些工作不用占用人手呢? 你需要

2015年创业中遇到的技术问题:21-30

21.高速清空表中的数据. 有个ip库的表.数据量几十万. 想在开发阶段,清空. 通过mysql-front和mysql控制台.都删除失败. 反应很慢.还有诸如lock失败的错误. 解决的方法:复制表的创建结构,比方 CREATE TABLE `ip_info` ( `ipbegin` varchar(20) DEFAULT NULL, `ipend` varchar(20) DEFAULT NULL, `zone` varchar(50) DEFAULT NULL, `company` var

三思考,实现自己定义404页:Tomcat、SpringMVC精确匹配、重写DispatchServlet

第1种方式:Tomcat直接处理 web.xml <error-page> <error-code>404</error-code> <location>/error/404.htm</location> </error-page> 这样的仅仅能展示纯静态的页面,很不灵活. 第2种方式:利用Spring MVC的最精确匹配 @Controller public class UrlNotFoundController { @Reques

三种思路实现自定义404页面:Tomcat、SpringMVC精准匹配、重写DispatchServlet

第1种方式:Tomcat直接处理 web.xml <error-page> <error-code>404</error-code> <location>/error/404.htm</location> </error-page> 这种只能展示纯静态的页面,非常不灵活. 第2种方式:利用Spring MVC的最精确匹配 @Controller public class UrlNotFoundController { @Request

nodejs+express+mysql 之 简单的在线HTML编辑器

1.从原网站下载源码:http://kindeditor.net/demo.php 2.将kindeditor放到项目内,使其能够完成基本功能 1).将plugins.themes.lang.kindeditor-min.js放到public/kindeditor/下 2).在views下创建文件editor.ejs,内容为 <script src="/kindeditor/kindeditor-min.js" type="text/javascript"&g

[ecommerce2] 017 Image Uploads 图片上传

pillow安装 pillow是python image库 >pip install pillow 知识介绍 slug slug:用于生成一个有意义(valid, meaninful)URL 参考(http://stackoverflow.com/questions/427102/what-is-a-slug-in-django) 比如:http://stackoverflow.com/questions/427102/what-is-a-slug-in-django 后面的"what-i

MVc 文本框设计样式

<td colspan="6"> <textarea class="content" name="content" style="height:250px;width:690px">@(Model.content)</textarea>(或者) @Html.TextAreaFor(it => it.content, 19, 100, new {style="margin:8p