posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          動態修改圖片大小的java servlet源碼

          Posted on 2007-12-18 16:20 詩特林 閱讀(3891) 評論(1)  編輯  收藏 所屬分類: Java

                                                                  動態修改圖片大小的java servlet

          代碼雖然比較簡單,但做個標記,以便是后查找.

          1.修改圖片的java Servlet代碼如下:

          package com.photo.gallery;

          import java.awt.AlphaComposite;
          import java.awt.Graphics2D;
          import java.awt.Image;
          import java.awt.image.BufferedImage;
          import java.io.File;
          import javax.imageio.ImageIO;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class ImageResizer extends HttpServlet {
              
          private static final long serialVersionUID = -8285774993751841288L;

              
          public void doGet(HttpServletRequest request, HttpServletResponse response) {
                  String imageOutput 
          = getParam(request, "output""png");
                  String imageRoot 
          = getParam(request, "root""/albums");
                  String imageFile 
          = getParam(request, "file""/Album1/image1.jpg");
                  
          int width = Integer.parseInt(getParam(request, "width""250"));
                  
          int height = Integer.parseInt(getParam(request, "width""0"));
                  
          if ("png".equals(imageOutput))
                      response.setContentType(
          "image/png");
                  
          else
                      response.setContentType(
          "image/jpeg");
                  String imageLoc 
          = request.getSession().getServletContext().getRealPath(
                          imageRoot)
                          
          + imageFile;
                  
          try {
                      BufferedImage bufferedImage 
          = ImageIO.read(new File(imageLoc));
                      
          int calcHeight = height > 0 ? height : (width
                              
          * bufferedImage.getHeight() / bufferedImage.getWidth());

                      ImageIO.write(createResizedCopy(bufferedImage, width, calcHeight),
                              imageOutput, response.getOutputStream());
                  }
           catch (Exception e) {
                      log(
          "Problem with image: " + imageLoc + e);
                  }

              }


              BufferedImage createResizedCopy(Image originalImage, 
          int scaledWidth,
                      
          int scaledHeight) {
                  BufferedImage scaledBI 
          = new BufferedImage(scaledWidth, scaledHeight,
                          BufferedImage.TYPE_INT_RGB);
                  Graphics2D g 
          = scaledBI.createGraphics();
                  g.setComposite(AlphaComposite.Src);
                  g.drawImage(originalImage, 
          00, scaledWidth, scaledHeight, null);
                  g.dispose();
                  
          return scaledBI;
              }


              
          private String getParam(HttpServletRequest request, String param, String def) {
                  String parameter 
          = request.getParameter(param);
                  
          if (parameter == null || "".equals(parameter)) {
                      
          return def;
                  }
           else {
                      
          return parameter;
                  }

              }

          }

          2.配置web.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/j2ee 
              http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
          >
              
          <servlet>
                  
          <servlet-name>image</servlet-name>
                  
          <servlet-class>com.photo.gallery.ImageResizer</servlet-class>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>image</servlet-name>
                  
          <url-pattern>/image</url-pattern>
              
          </servlet-mapping>

          </web-app>

          3.在地址欄輸出如下的連接:
          http://localhost:8088/Javaimageresizer/image?root=/albums&file=/thumbs/imagename.jpg&width=270&height=100
          即可查看效果

          評論

          # re: 動態修改圖片大小的java servlet源碼  回復  更多評論   

          2009-03-12 21:45 by hanfeng
          Servlet也是一種JAVA程序是吧?
          主站蜘蛛池模板: 化隆| 沙河市| 平顶山市| 雅安市| 太康县| 英德市| 林西县| 衡阳市| 肥乡县| 阜阳市| 佛冈县| 建平县| 青州市| 盈江县| 苍溪县| 岳普湖县| 廊坊市| 交口县| 长白| 西盟| 临夏县| 乐业县| 敦化市| 磐安县| 黄大仙区| 昌都县| 泰和县| 瓦房店市| 贞丰县| 梨树县| 柯坪县| 南康市| 田阳县| 吉木萨尔县| 乐山市| 巴南区| 小金县| 汶川县| 宽城| 若羌县| 互助|