• 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 }
  • 相关阅读:
    Java中获取键盘输入值的三种方法
    java多线程处理与数据集合
    Apachetomcat学习
    Java之枚举
    多例设计模式与枚举
    权限管理(数据库部分)
    hdu 2458(最大独立集)
    hdu 1507(最大匹配)
    hdu 1350+hdu 1960(最小路径覆盖)
    hdu 1845(最大匹配)
  • 原文地址:https://www.cnblogs.com/XiaoGer/p/4992179.html
Copyright © 2020-2023  润新知