在線圖片壓縮后以ImageIO 流的形式 設置大小顯示指定頁面


1、Servlet   代碼

public class ZoomImgServlet extends HttpServlet implements Servlet {

    public void init(ServletConfig conf)throws ServletException {}
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        int width=352,height=233;//這是設置圖片顯示的寬和高
        String srcImgPath=“http://pic.to8to.com/attch/day_160218/20160218_d968438a2434b62ba59dH7q5KEzTS6OH.png”;
        resp.setDateHeader("Expires", 0L);
        resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        resp.addHeader("Cache-Control", "post-check=0, pre-check=0");
        resp.setHeader("Pragma", "no-cache");// 設置響應頭信息,不緩存此內容
        resp.setContentType("image/jpeg");
        URL url = new URL(srcImgPath);  
        //打開鏈接  
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
        //設置請求方式為"GET"  
        conn.setRequestMethod("GET");  
        //超時響應時間為5秒  
        conn.setConnectTimeout(5 * 1000);  
        InputStream inStream = conn.getInputStream();
        byte[] data = null;
        ServletOutputStream out=null;
        try {
            data = readInputStream(inStream);
            ByteArrayInputStream bin = new ByteArrayInputStream(data);  
            Image srcImg = ImageIO.read(bin);  
            BufferedImage buffImg = null;  
            buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  
            buffImg.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);  
            out = resp.getOutputStream();
            ImageIO.write(buffImg, "PNG", out);
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            out.close();
        }
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        super.doGet(req, resp);
    }
    
    
     private static byte[] readInputStream(InputStream inStream) throws Exception{  
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
        //創建一個Buffer字符串  
        byte[] buffer = new byte[1024];  
        //每次讀取的字符串長度,如果為-1,代表全部讀取完畢  
        int len = 0;  
        //使用一個輸入流從buffer里把數據讀取出來  
        while( (len=inStream.read(buffer)) != -1 ){  
            //用輸出流往buffer里寫入數據,中間參數代表從哪個位置開始讀,len代表讀取的長度  
            outStream.write(buffer, 0, len);
        }
        //關閉輸入流  
        inStream.close();  
        //把outStream里的數據寫入內存  
        return outStream.toByteArray();  
    }  
}

 

2、web.xml 配置

  <servlet>
    <servlet-name>zoomImgServlet</servlet-name>
    <servlet-class>com.test.servlet.ZoomImgServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>zoomImgServlet</servlet-name>
    <url-pattern>/zoomImg.jpg</url-pattern>
  </servlet-mapping>

 

3、頁面調用

<img src="${path}/zoomImg.jpg" />


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM