jsp中畫圖

來源:互聯網
上載者:User

<%@ page language="java"
 pageEncoding="GB2312"
 contentType="text/html; charset=GB2312"
 import="java.awt.*,
   java.awt.image.*,
   javax.swing.*,
   com.sun.image.codec.jpeg.*,
   javax.imageio.*"
%>

<html>
<head>
<title>我的圖畫</title>
</head>
<body>
<%

 System.out.println("----------");
 int width=400,height=400;
 BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
 Graphics g = image.getGraphics();

 g.setColor(Color.WHITE);
 g.fillRect(0,0,width,height);

 g.setColor(Color.BLACK);
 g.drawString("交通工具使用率",10,10);

 g.setColor(Color.RED);
 //填充圖形
 g.fillRect(30,30,100,20);
 g.setColor(Color.BLACK);
 //畫邊框
 g.drawRect(30,30,100,20);
 //寫字
 g.drawString("飛機",135,45);

 g.setColor(Color.BLUE);
 g.fillRect(30,55,120,20);
 g.setColor(Color.BLACK);
 g.drawRect(30,55,120,20);
 g.drawString("火車",155,70);

 g.setColor(Color.YELLOW);
 g.fillRect(30,80,90,20);
 g.setColor(Color.BLACK);
 g.drawRect(30,80,90,20);
 g.drawString("輪船",125,95);
/**
   這種方式也可以輸出,在jdk1.3中常常使用 
// 將ContentType設為"image/jpeg", 以讓瀏覽器識別映像格式。
// response.setContentType("image/jpeg");
// 建立JPEG映像編碼器,將BufferedImage編碼成jpeg格式輸出到response的輸出資料流。
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
// JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
// param.setQuality(1.0F, true);
// encoder.encode(image, param);
**/
 /**
 在jdk1.4開始,引入了一個新的imageio庫,提供了一個新的工具類ImageIO來進行映像的輸出和輸出操作。使用ImageIO進行映像的輸 出操作,可使代碼更加簡潔,如下:
 **/
 // 關閉緩衝(預設情況下是開啟的)。在實際應用中我們發現,
    // 如果不關閉緩衝,在IE5.5上可能無法正常運行本程式。
    // 而IE5.0和IE6.0則不會有問題。 
    ImageIO.setUseCache(false);
    // 將映像以jpg格式寫入到輸出資料流。
    ImageIO.write(image, "jpg", response.getOutputStream());
   
   
    /**
    從資料庫取得圖片並在上面加浮水印字
 一般我們將圖片以二進位格式存在資料庫中。藉助ImageIO的read方法,我們可以直接將資料庫中的圖片產生BufferedImage.
 
 // 這裡我們假設在資料庫表tabimage中有一個myimage欄位存放有圖片。
 PreparedStatement ps = conn.prepareStatement("SELECT myimage FROM tblimage WHERE id=119");
 ResultSet rs = ps.executeQuery();
 InputStream data = null;
 if (rs.next())
 {
     // 取得圖片的輸入資料流
     data = rs.getBinaryStream("signet");
 }
 rs.close();
 ps.close();
 if (data == null) {
 conn.close();
 return null;
 }
 ImageIO.setUseCache(false);
 // 將圖片讀入到BufferedImage對象中。
 BufferedImage image = ImageIO.read(data);
 conn.close();
 // 取得映像的graphics對象,
 Graphics graphics = image.createGraphics()
 // 通過graphics對象在圖片上寫上文字
 graphics.drawString("Hello World!",10,10);
 餘下的代碼就是將映像輸出,請參考前面的例子。由於這個例子涉及到資料庫的操作,無法給出完整的例子。
 
 製作縮圖
 
 在很多線上購物的網站,通常將商品的介紹圖片以縮圖的形式顯示在商品目錄清單中,使用者點擊縮圖後再彈出商品的詳細內容及     原始圖片。
 
 所謂縮圖就是將原圖以一定比例縮小。同樣,藉助ImageIO, 我們先從資料庫(或檔案)讀入一個圖片(參考上面的例子),
 
 //產生縮圖
 // 讀入原始圖的image對象
 InputStream inputstream = new FileInputStream("E://tomcat5//webapps//testset//web.gif");
 BufferedImage src = ImageIO.read(inputstream);
 // 得到原圖的寬度和高度
 int wideth=src.getWidth();
 int height=src.getHeight();
 // 產生原圖1/2大小的記憶體配置圖像,你也可以指定固定大小
 BufferedImage taget = new BufferedImage(wideth/2,height/2,BufferedImage.TYPE_INT_RGB);
 // 將原圖繪製在縮小後的記憶體配置圖像上
 taget.getGraphics().drawImage(src,0,0,wideth/2,height/2,null);
    ImageIO.setUseCache(false);
    ImageIO.write(taget, "jpg", response.getOutputStream()); 
%>
</body>
</html>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.