生成帶水印的圖片

package cn.dyx.util;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;

import org.lxh.smart.File;

public class ImageUtils {

 /**
  * 保存帶水印的圖片
  * @param f  要保存文件,類型必須是SmartUpload中的File類型
  * @param realPath 保存的目錄
  * @param fileName 要保存的文件名
  * @throws Exception
  */
 public static void saveFileAddWater(File f, String realPath, String fileName)
   throws Exception {
  // 循環取得文件內容
  byte[] data = new byte[f.getSize()];
  for (int i = 0; i < f.getSize(); i++) {
   data[i] = f.getBinaryData(i);
  }
  // 使用InputStream讀入
  InputStream is = new ByteArrayInputStream(data);
  // 創建緩存圖片
  BufferedImage image = ImageIO.read(is);
  // 取得畫筆對象
  Graphics g = image.getGraphics();

  // 讀取水印文件
  String waterPath = realPath + "/water.jpg";
  BufferedImage waterImg = ImageIO.read(new java.io.File(waterPath));

  g.drawImage(waterImg, 0, 0, new javax.swing.JFrame());

  ImageIO.write(image, f.getFileExt(), new java.io.File(realPath + "/"
    + fileName));

 }

}

 

 

 

處理文件上傳:

 

 


 public void update(HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  // 接收參數。
  // 由於要進行文件操作,因此先初始化SmartUpload。
  SmartUpload smart = new SmartUpload();
  // 初始化
  smart.initialize(super.getServletConfig(), request, response);
  smart.upload();

  // 取得參數以及文件
  int empno = Integer.parseInt(smart.getRequest().getParameter("empno"));
  String ename = smart.getRequest().getParameter("ename");
  String job = smart.getRequest().getParameter("job");
  int mgr = Integer.parseInt(smart.getRequest().getParameter("mgr"));
  SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
  Date hiredate = sf.parse(smart.getRequest().getParameter("hiredate"));
  double sal = Double.parseDouble(smart.getRequest().getParameter("sal"));
  double comm = Double.parseDouble(smart.getRequest()
    .getParameter("comm"));
  int deptno = Integer
    .parseInt(smart.getRequest().getParameter("deptno"));

  Emp emp = new Emp();
  emp.setComm(comm);
  emp.setDeptno(deptno);
  emp.setEmpno(empno);
  emp.setEname(ename);
  emp.setHiredate(hiredate);
  emp.setJob(job);
  emp.setMgr(mgr);
  emp.setSal(sal);

  // 處理文件上傳
  File f = smart.getFiles().getFile(0);
  if (f != null && f.getSize() > 0) {

   if (f.getContentType().trim().equals("image/pjpeg")
     || f.getContentType().trim().equals("image/gif")) {
    // 取得真實路徑
    String path = request.getSession().getServletContext()
      .getRealPath("/upload")
      + "/";
    // 先刪除原有文件
    String oldName = smart.getRequest().getParameter("oldphoto");

    java.io.File oldFile = new java.io.File(path + oldName);
    if (oldFile.exists()) {
     oldFile.delete();
    }

    // 傳入新文件
    String fileName = UUID.randomUUID().toString() + "."
      + f.getFileExt();

    emp.setPhoto(fileName);

    // 保存文件
   // f.saveAs(path + fileName);

//處理帶水印的文件保存

 ImageUtils.saveFileAddWater(f, path, fileName) ;


   }
  } else {
   // 如果沒有傳遞文件,則還使用原有文件來顯示
   String oldName = request.getParameter("oldphoto");
   if (!"".equals(oldName)) {
    // 如果不是空值,將原有文件名設置到vo中。
    emp.setPhoto(oldName);
   }
  }

  boolean flag = ServiceFactory.getEmpServiceInstance().update(emp);

  // 根據結果將提示信息傳遞到emp_insert.jsp上
  if (flag) {
   request.setAttribute("message", "僱員修改成功!");
   request.setAttribute("path", "pages/EmpServlet?status=list");
  } else {
   request.setAttribute("message", "僱員修改失敗,該僱員不存在,已經被刪除!");
   request.setAttribute("path", "pages/EmpServlet?status=list");
  }

  // 跳轉
  request.getRequestDispatcher("/pages/forward.jsp").forward(request,
    response);

 }

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章