<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-71  評論-4  文章-0  trackbacks-0
    我們經(jīng)常要在網(wǎng)頁看到一些動態(tài)更新的圖片,最常見的莫過于股票的K線圖,本文試圖通過一個簡單的實例,向大家展示如何通過JSP 調(diào)用JavaBean在網(wǎng)頁上動態(tài)生成柱狀圖。 
       背景:本人最近在為某統(tǒng)計局開發(fā)項目時,涉及到在網(wǎng)頁上動態(tài)生成圖片的問題,費了一天的時間,終于搞定,為幫助大家在以后遇到同樣的問題時不走彎路,現(xiàn)將設(shè)計思想及源代碼公布出來,與大家共勉。以下代碼在Windows2000成功測試通過,Web應(yīng)用服務(wù)器采用Allaire公司的Jrun3.0。
       第一步:創(chuàng)建一個Java Bean用來生成jpg文件 
       源程序如下: 

    //生成圖片的 Java Bean 
    //作者:崔冠宇 
    //日期:2001-08-24 
    import java.io.*; 
    import java.util.*; 
    import com.sun.image.codec.jpeg.*; 
    import java.awt.image.*; 
    import java.awt.*; 

    public class ChartGraphics { 
      BufferedImage image; 
      public void createImage(String fileLocation) { 
       try { 
        FileOutputStream fos = new FileOutputStream(fileLocation); 
        BufferedOutputStream bos = new BufferedOutputStream(fos); 
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos); 
        encoder.encode(image); 
        bos.close(); 
       } catch(Exception e) { 
        System.out.println(e); 
       } 
      } 

      public void graphicsGeneration(int h1,int h2,int h3,int h4,int h5) { 

       final int X=10; 
       int imageWidth = 300;//圖片的寬度 
       int imageHeight = 300;//圖片的高度 
       int columnWidth=30;//柱的寬度 
       int columnHeight=200;//柱的最大高度 

       ChartGraphics chartGraphics = new ChartGraphics(); 
       chartGraphics.image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); 
       Graphics graphics = chartGraphics.image.getGraphics(); 
       graphics.setColor(Color.white); 
       graphics.fillRect(0,0,imageWidth,imageHeight); 
       graphics.setColor(Color.red); 
       graphics.drawRect(X+1*columnWidth, columnHeight-h1, columnWidth, h1); 
       graphics.drawRect(X+2*columnWidth, columnHeight-h2, columnWidth, h2); 
       graphics.drawRect(X+3*columnWidth, columnHeight-h3, columnWidth, h3); 
       graphics.drawRect(X+4*columnWidth, columnHeight-h4, columnWidth, h4); 
       graphics.drawRect(X+5*columnWidth, columnHeight-h5, columnWidth, h5); 
       chartGraphics.createImage("D:\\temp\\chart.jpg"); 
      } 

     

       解釋:createImage(String fileLocation)方法用于創(chuàng)建JPG圖片,參數(shù)fileLocation為文件路徑 

       graphicsGeneration(int h1,int h2,int h3,int h4,int h5)方法用于繪出圖片的內(nèi)容,參數(shù)h1……h(huán)5為每一個長方形的高度 

       第二步:創(chuàng)建另一個Java Bean從文本文件中讀取數(shù)據(jù)(每一個長方形的高度),在實際應(yīng)用中數(shù)據(jù)存儲在Oracle數(shù)據(jù)庫中 

       源程序如下: 

    //讀取Text文件中數(shù)據(jù)的 Java Bean 
    //作者:崔冠宇 
    //日期:2001-08-24 
    import java.io.*; 
    public class GetData { 
      int heightArray[] = new int[5]; 
      public int[] getHightArray() { 
       try { 
        RandomAccessFile randomAccessFile = new RandomAccessFile   ("d:\\temp\\ColumnHeightArray.txt","r"); 
        for (int i=0;i<5;i++) 
        { 
         heightArray[i] = Integer.parseInt(randomAccessFile.readLine()); 
        } 
       } 
       catch(Exception e) { 
        System.out.println(e); 
       } 
       return heightArray; 
      } 
    }  

       解釋: getHightArray()用于從文本中讀取數(shù)據(jù),將文本中的String類型轉(zhuǎn)換為int類型,并以數(shù)組類型返回。 

       第三步:創(chuàng)建JSP文件 

       源程序如下: 
    <jsp:useBean id="cg" class="example.img.ChartGraphics"/> 
    <jsp:useBean id="gd" class="example.img.GetData"/> 
    <%! 
    int height[]=new int[5]; 
    %> 
    <% 
    height=gd.getHightArray(); 
    for(int i=0;i<height.length;i++)
       out.println(height[i]+"<br>");
    cg.graphicsGeneration(height[0],height[1],height[2],height[3],height[4]); 
    %> 
    <html> 
    <body> 
    <img src="d:\temp\chart.jpg"></img> 
    </body> 
    </html> 

        解釋:JSP首先調(diào)用Bean (GetData..class)讀取文件中的數(shù)據(jù),再調(diào)用Bean(ChartGraphics.class)生成圖片,最后顯示圖片。 
       結(jié)束語:由于文本(ColumnHeightArray.txt)中的數(shù)據(jù)可以隨時變化,因此生成的圖片中的5個長方形的高度是隨之變化的,從而實現(xiàn)了圖片的動態(tài)生成.該設(shè)計思想還可以用于制作網(wǎng)站的投票系統(tǒng)。
    posted on 2006-01-12 13:06 zjw_albert 閱讀(105) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成人免费福利电影| 亚洲日本乱码一区二区在线二产线 | 拍拍拍无挡视频免费观看1000 | 在线观看免费亚洲| 最近中文字幕大全免费视频| 亚洲精品黄色视频在线观看免费资源| 一本色道久久综合亚洲精品蜜桃冫| 亚洲自偷自拍另类12p| 亚洲乱色熟女一区二区三区丝袜| 四虎永久精品免费观看| 在人线av无码免费高潮喷水| 青青草无码免费一二三区| 不卡视频免费在线观看| 老妇激情毛片免费| 久久精品国产亚洲av天美18| 亚洲 欧洲 日韩 综合在线| 亚洲美女一区二区三区| 亚洲男人的天堂在线播放| 亚洲深深色噜噜狠狠爱网站| 亚洲毛片av日韩av无码| 亚洲高清免费视频| 亚洲毛片无码专区亚洲乱| 国产成人亚洲综合无码精品| 国产亚洲精aa成人网站| 亚洲人成色77777在线观看大| 亚洲成av人片不卡无码久久| 免费在线视频一区| 又大又硬又爽免费视频| 国产一级淫片免费播放| 国产yw855.c免费视频| 国产伦一区二区三区免费| 国产免费小视频在线观看| 国产在线观看免费视频播放器| 在线视频免费国产成人| 四虎AV永久在线精品免费观看| 国产免费久久精品久久久| 少妇亚洲免费精品| 中文字幕一精品亚洲无线一区| 亚洲精品无码Av人在线观看国产| 亚洲国产精品无码久久SM| 亚洲色欲色欲综合网站|