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

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

          Posted on 2007-12-18 16:20 詩特林 閱讀(3890) 評論(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程序是吧?
          主站蜘蛛池模板: 沙田区| 遂昌县| 察雅县| 利川市| 文山县| 资兴市| 丰镇市| 天等县| 沁阳市| 秦安县| 花莲市| 会昌县| 汝州市| 宁南县| 中江县| 筠连县| 潜江市| 黄梅县| 大丰市| 左权县| 通化县| 临城县| 麻栗坡县| 洛浦县| 区。| 洪湖市| 盱眙县| 华亭县| 谷城县| 和硕县| 平度市| 新巴尔虎右旗| 龙山县| 晋江市| 宾川县| 定襄县| 夏邑县| 高清| 闵行区| 渝中区| 玛沁县|