我們在處理數(shù)據(jù)時(shí),有時(shí)希望能用圖象直觀的表述,在這里有一個(gè)巧方法,能方便快捷的實(shí)現(xiàn)一些簡單的圖形(不能稱之圖象),比如條形圖,我們不必去用 java來生成并顯示圖象,(java生成圖象很慢),我們可以這樣來作,先用作圖工具作一個(gè)很小的你需要的圖片,再根據(jù)你所處理的數(shù)據(jù)量來實(shí)時(shí)的加長它,就可以得到所要表述的圖例。比如我們在數(shù)據(jù)庫中得到了一組數(shù)據(jù),我們從中找出最大的那一個(gè),按比列設(shè)定其標(biāo)簽的長度,其它的數(shù)據(jù)圖形則可與它相比,得到的長度,這樣,一個(gè)簡簡單單的條形圖就出來。但有時(shí)一些簡單的圖形已經(jīng)不能解決我們實(shí)際遇到的情況,比如曲線圖就不能用這種方法,這時(shí)我們需要生成java圖象,也許大家都用過applet這樣的程序吧,若訪問量不大,而實(shí)時(shí)性又很特殊時(shí)(比如股票系統(tǒng)),必須這樣用它。但事實(shí)上,我們web程序大多有前后臺(tái)之分,前臺(tái)瀏覽,后臺(tái)維護(hù)。這樣我們可以在后臺(tái)用servlet實(shí)時(shí)動(dòng)態(tài)定時(shí)地生成圖象文件,而前臺(tái)只是查看靜態(tài)圖片,這比你用applet來動(dòng)態(tài)產(chǎn)生圖象的速度快了不知多少倍,因?yàn)閍pplet來動(dòng)態(tài)產(chǎn)生圖象,有兩個(gè)地方很費(fèi)時(shí),一是數(shù)據(jù)庫查詢時(shí)間,二是applet本身生成圖象就很慢。下面我以一個(gè)簡單的例子來說明一下怎樣生成并寫入圖象文件,本例注重的是怎樣寫入圖象文件,相信寫過applet的朋友會(huì)生成更加漂亮的圖象。
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.awt.image.bufferedimage;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
public class servlet2 extends httpservlet {
public void init(servletconfig config) throws servletexception {
super.init(config);
}
public void doget(httpservletrequest request, httpservletresponse response)
throws servletexception, ioexception {
string sfilename = "e:/temp/name.jpg";
try{
fileoutputstream fos = new
fileoutputstream(sfilename);
bufferedimage myimage = new bufferedimage(225, 225,bufferedimage.type_int_rgb);
graphics g = myimage.getgraphics();
g.setcolor(color.white);
g.fillrect(0,0,225,225);
g.setcolor(color.black);
g.drawstring("finance balance summary", 40, 15);
g.drawstring("primary", 90, 30);
g.setcolor(color.darkgray);
&g.fillrect(15,193,7,7);
g.setcolor(color.black);
g.drawstring("% operating", 25, 200);
g.setcolor(color.yellow);
g.fillrect(130,193,7,7);
g.setcolor(color.black);
g.drawstring("% term", 140, 200);
g.setcolor(color.lightgray);
g.fillrect(15,213,7,7);
g.setcolor(color.black);
g.drawstring("% mortgage", 25, 220);
g.setcolor(color.green);
g.fillrect(130,213,7,7);
g.setcolor(color.black);
g.drawstring("% lease", 140, 220);
jpegimageencoder jpg =
jpegcodec.createjpegencoder(fos);
jpg.encode(myimage);
}catch (exception e){
string exceptionthrown = e.tostring();
string sourceofexception = " method";
system.out.println("origional exception thrown: " +
exceptionthrown + '
' + '
');
system.out.println("origional sourceofexception: " +
sourceofexception + '
' + '
');
} // catchstatementend
}
}新聞熱點(diǎn)
疑難解答
圖片精選