亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

用JSP創(chuàng)建可重用的圖形背景

2020-07-27 21:49:53
字體:
來源:轉載
供稿:網(wǎng)友
有一個技術可以在Java Server Pages(JSP)中產(chǎn)生整齊、精細的直方圖,它可以用來作為可重用的背景。為了達到可重用性的目的,你需要使得圖形的尺寸可以調(diào)整,你還應該管理直方塊以免它們越過圖形區(qū)域的邊界。然后,你還需要把圖形數(shù)據(jù)編碼為一種可用的圖形格式。我們將利用這個代碼例子介紹本技巧。
你需要什么?

為了開始運行本文所給出的例子,你需要JDK 1.2或者它的更高版本(http://java.sun.com)。你還需要一個支持JSP的Web服務器。我在Tomcat上測試該例子,我用com.sun.image.codec.jpeg 類(在Sun Java 2 SDK中發(fā)布)進行圖形數(shù)據(jù)的編碼。

可重用的背景

既然你希望擁有可重用的背景,你應該創(chuàng)建一個Java類來管理布局,包括標題區(qū)和外部邊界。如A所示。

圖A



正如你所看到的那樣,我在標題區(qū)和外部邊界上都進行了陰影處理。標題有一個白色的、一個象素寬的邊界,圖形區(qū)有一個細的黑色邊界。這些邊界增加了陰影的清晰度。

邊界很容易產(chǎn)生。用Graphics2D對象的fill()方法來填充一個藍色的標題矩形,然后用draw()方法用其它顏色畫出邊界。

產(chǎn)生陰影效果也很簡單。首先,用fill()方法畫出一個陰影。然后,在偏移七個象素的地方畫出標題。這個偏移產(chǎn)生了三維的效果,這樣就得到了陰影效果。

舉一個例子

假設有一家公司銷售農(nóng)產(chǎn)品,它需要一個直方圖來顯示銷售額。在實際應用場合下,我們需要從一個數(shù)據(jù)庫或者XML文件中獲取這些數(shù)據(jù),但是為了簡單起見,我們假設銷售額數(shù)據(jù)保存在下面的兩個數(shù)組中:
String datanames[] = {"蘋果", "桔子", "桃子", "檸檬", "柚子"};
int datavalues[] = {11, 62, 33, 102, 50};


第一個數(shù)組保存該公司出售的各種農(nóng)產(chǎn)品的項目。第二個數(shù)組為對應各農(nóng)產(chǎn)品的銷售額。

準備好直方圖

直方圖將以JPEG格式顯示和保存,所以我們需要正確設置MIME,即內(nèi)容類型。瀏覽器利用MIME類型來決定如何做出反應。下面的代碼用以設置MIME類型:
response.setContentType("image/jpeg");

接下來,我們需要一個表示該圖像的對象。Java 2D API支持BufferedImage類,它提供了一種在內(nèi)存中保存和管理象素數(shù)據(jù)的方法。我們希望圖形是彩色的,所以使用了TYPE_INT_RGB圖形類型。WIDTHHEIGHT這兩個整形數(shù)據(jù)用來以象素為單位指定該圖像的寬度和高度:
BufferedImage bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);

現(xiàn)在我們有個一個BufferedImage對象,我們可以通過調(diào)用該對象的createGraphics()方法來設置Graphics2D的內(nèi)容:
Graphics2D biContext = bi.createGraphics();

寬度、高度和極大值

創(chuàng)建該圖的程序員需要根據(jù)該圖形的重要程度和頁面的整體布局來設置WIDTH參數(shù)。圖形元素根據(jù)圖形寬度的改變自動調(diào)整自身的大小。

標題的寬度和邊界區(qū)域,以及圖形的最長直方塊需要根據(jù)WIDTH參數(shù)進行計算。這樣做的目的是為了確保所有的圖形元素都沒有超過圖形的寬度而越過圖形的右邊界。

需要顯示的數(shù)據(jù)條目數(shù)決定了圖形的HEIGHT參數(shù)。如果有新的元素添加到datavalues[]datanames[]數(shù)組,那么圖形的高度就應該對應增長以適應所需顯示的區(qū)域大小。

maximum參數(shù)用于最長直方塊。然后,其它直方塊的寬度按照相對于maximum的量進行計算:
int barWidth = (innerWIDTH * currentValue) / maximum;

上面的算法用到了maximum和圖形的innerWIDTH(圖形區(qū)域)這兩個數(shù)值來確保直方塊會隨著WIDTH數(shù)值的改變而自動伸縮。

顯示圖形背景

為了顯示該圖形,我們需要創(chuàng)建一個背景圖像,然后添加圖形數(shù)據(jù)。首先,創(chuàng)建一個graphBG對象并調(diào)用它的draw()方法:
graphBG gr = new graphBG();
gr.draw(biContext, WIDTH, HEIGHT, "Farm Produce", "Overall Average: " + average);

draw()方法的參數(shù)包括圖形內(nèi)容、biContext、WIDTHHEIGHTgraphBG類利用它們來決定標題和圖形區(qū)域的寬度和高度。最后,計算average數(shù)據(jù)值并添加到標題中顯示的文本中。

 

創(chuàng)建直方塊

每個直方塊的縱坐標(y軸)位置按照如下公式計算:y_pos = i * displayHeight + headerOffset。其中displayHeight等于直方塊上文本的高度加上直方塊的高度,headerOffset表示從圖形頂端開始的垂直距離,包括標題區(qū)域以及陰影的高度。

我用了前面創(chuàng)建標題邊界的技術創(chuàng)建了這些直方塊以及它們的邊界。我把直方塊邊界的寬度和高度分別減去一個象素,這樣每個直方塊看起來都有一個紅色的邊界,并通過在白色背景上畫上內(nèi)邊界使得減切效果的產(chǎn)生變得簡單起來。

編碼

我們已經(jīng)在內(nèi)存中建立好了這幅圖片,現(xiàn)在我們對它進行編碼并把它顯示給用戶。我們不能用默認得JSP輸出流來處理JPEG,所以我們需要利用response.getOutputStream()從響應對象中獲取流。我們可以用輸出流來創(chuàng)建一個JPEGImageEncoder對象并調(diào)用它的encode(),傳遞我們在前面創(chuàng)建的BufferedImage對象:
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(bi);


產(chǎn)生的圖象相對較小,只占用了13.7千字節(jié)的容量。B給出了最終的效果:

圖B



無論從那個方面來說,index.jsp的輸出都是一個JPEG圖像。你可以把它保存到你的桌面上或者按PrintScreen鍵來抓圖。如果你需要在同一頁上顯示多幅圖形或者把圖形引入到其它內(nèi)容中,你可以使用HTML的img標記(<img src = ”index.jsp”>),然后,當需要時放置該圖,如利用一個表格。

也許最老的用于動態(tài)產(chǎn)生圖形的Internet技術之一可以實現(xiàn)處了顯示一個圖像之外的其它任務。設想你需要記錄這副圖的瀏覽人數(shù)(類似記錄廣告點擊次數(shù)的情況),那么你需要在index.jsp中實現(xiàn)諸如點擊計數(shù)、數(shù)據(jù)庫或者文件訪問之類的任務,你可以在后臺處理這些任務而不需要利用緩沖頁面切換給用戶。

結論

我們在本文之中檢驗了一種產(chǎn)生整齊、看上去很舒服的直方圖。我們巧妙的處理了圖形尺寸的改變以及編碼為JPEG格式,并且討論了通過修改HTML代碼的方式把最終產(chǎn)生的圖片放置在頁面的不同位置上。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
午夜精品偷拍| 欧美在线播放一区| 九热爱视频精品视频| 久久精品国产亚洲av麻豆| 2020国内自拍视频| 97涩在线观看视频| 在线观看免费网站| 一区二区三区四区不卡在线| 成人黄视频在线观看| 每日在线观看av| 日韩中文字幕欧美| 黑人狂躁日本娇小| 欧美成人短视频| 欧美一级久久久久久久大片| 91精品国产毛片武则天| 欧美色综合一区二区三区| 不卡在线视频中文字幕| 一区二区三区波多野结衣在线观看| 国产精品videossex久久发布| 日本护士做爰视频| 午夜羞羞小视频在线观看| 国产精品一码二码三码在线| 免费啪视频在线观看| xx欧美xxx| 最新黄色av网址| 日韩精品一区二区三区视频在线观看| 高清电影在线观看免费| 欧美大片黄色| 亚洲无人区码一码二码三码| 日本v片在线高清不卡在线观看| 日日碰狠狠丁香久燥| 久久精品一级片| 国产精品国产精品| 日韩一级精品| 中文字幕精品一区日韩| 天堂在线视频观看| 蜜臀av国产精品久久久久| 精品无码免费视频| 亚洲熟女乱综合一区二区| 久久午夜精品| av国产在线观看| 日本一区二区三区在线视频| 韩国成人福利片在线播放| 中文写幕一区二区三区免费观成熟| 亚洲午夜国产一区99re久久| 久久视频一区| 色欧美88888久久久久久影院| 日本一卡2卡三卡4卡网站| 僵尸世界大战2 在线播放| 国产高清不卡无码视频| 爽爽爽爽爽爽爽成人免费观看| 欧美成人精品3d动漫h| 男人av在线| 自拍日韩欧美| 波多结衣在线观看| 欧美精品xxx| 亚洲天堂中文在线| 欧美残忍xxxx极端| 老司机福利在线观看| 日韩精品极品毛片系列视频| www.黄色片| 欧美爱爱视频网站| 性欧美videos另类喷潮| 777色狠狠一区二区三区| 亚洲欧洲日夜超级视频| 日本一区二区在线| 性生活三级视频| 欧美视频你懂的| 久久精品视频久久| 日韩久久不卡| 亚洲人被黑人高潮完整版| 最新国产露脸在线观看| 你懂的在线网址| 日韩在线视频观看免费| 一二三中文字幕在线| 国产综合精品视频| 尤物网精品视频| 国产人妻精品午夜福利免费| 亚洲高清不卡在线观看| 大肉大捧一进一出好爽视频| 亚洲第一成人av| 国产欧美在线观看视频| 中文字幕第28页| 青青草原在线亚洲| bdsmchinese医疗折磨| 无码任你躁久久久久久老妇| 欧美国产成人在线| 成人性做爰aaa片免费看不忠| 555夜色666亚洲国产免| 曰本大片免费观看视频| 久久久久久久久久久91| 成人激情电影一区二区| 国产成人精品亚洲| 亚洲午夜久久久久中文字幕久| 性猛交xxxx乱大交孕妇印度| 亚洲free性xxxx护士白浆| av漫画网站在线观看| 久久香蕉精品香蕉| av在线一区不卡| 亚洲国产精品中文| 亚洲人在线观看| 欧美一级高清片在线观看| 香蕉视频在线观看网站| 国产农村妇女精品| 亚洲精品一区二区三区香蕉| 国产成人精品999在线观看| 天天靠夜夜靠| 中日韩一区二区三区| 伊人狠狠色j香婷婷综合| 国产香蕉免费精品视频| 日韩高清第一页| 免费不卡视频| av在线播放免费| 在线观看色视频| 天天操天天是| 亚洲男人天堂一区| av一级久久| 亚洲尤物精选| 青青草av网站| aaa在线免费观看| 亚洲在线视频播放| 亚洲国产一二三| 亚洲影影院av| 精品av在线播放| 精品国产鲁一鲁****| 亚洲欧洲一区二区福利| 国产婷婷一区二区| 精品二区三区线观看| 日韩欧美性视频| 欧美性视频一区二区三区| 欧美日韩国产一中文字不卡| 国产日韩欧美一区二区三区在线观看| 在线国产91| av日韩在线看| 男人的天堂一区| 色多多视频在线观看| 午夜视频在线网站| 国产在线精品免费| 国产无精乱码一区二区三区| 国产又黄又爽免费视频| 影音先锋男人资源在线观看| 97成人超碰视| 亚洲av无码一区二区二三区| 国产精品㊣新片速递bt| 亚洲国产日韩综合一区| 欧美日韩国产一区二区三区地区| 国产全是老熟女太爽了| 亚洲伊人春色| 成人福利免费网站| 亚洲国产精品va在线看黑人| 亚洲永久在线| 久久人体大尺度| 女性女同性aⅴ免费观女性恋| 国产精品88888| 国产午夜视频在线观看| 久久福利视频一区二区| 欧美剧情电影在线观看完整版免费励志电影| 国产.com| 免费亚洲电影| 欧美精品密入口播放| 超碰成人在线免费观看| heyzo在线欧美播放| 最新日韩免费视频| 中文字幕66页| 久久爱www久久做| 国产高清在线一区二区| 日韩免费电影一区二区三区| 高清乱码毛片入口| av电影资源| 在线亚洲欧美视频| 成人午夜sm精品久久久久久久| 亚洲草久电影| 亚洲少妇中文字幕| caoporn国产一区二区| youjizz亚洲| 亚洲狠狠婷婷综合久久久| 亚洲女人天堂成人av在线| 亚洲综合中文字幕在线观看| 91精品视频一区| 亚洲aa在线| 99视频在线观看一区三区| 欧美xxxxx牲另类人与| 三级黄色网址| h色视频在线观看| 欧美网站免费观看| 7777精品久久久久久| 国产日韩在线| 免费成人在线看| 一级性生活毛片| 中文字幕在线观看高清| 成人在线视频一区二区| 亚洲美女91| 好看的日韩av电影| 91手机在线视频| 精品成人国产| 国产精品久久久久av福利动漫| 久草在线资源视频在线观看| 欧美乱大交xxxxx潮喷l头像| 色黄视频在线观看| 一本一本久久a久久综合精品| 欧美日韩在线不卡| 91精品一区二区三区在线观看| 亚洲专区区免费| 国产精品电影一区二区| 91九色蝌蚪在线| 久久午夜宅男免费网站| 婷婷久久久久久| 亚洲国产精品一区二区www| 精品久久毛片| 天天操天天干天天爱| 日韩色视频在线观看| 亚洲电影免费观看高清完整版在线| 成年人免费av| 亚洲国产精华液网站w| 国产夫妻在线播放| 成人免费视频网站在线看| 色就是色欧美| 欧美日韩午夜| 三上悠亚av一区二区三区| 你懂的网站在线观看网址| 日韩免费影院| 女性隐私黄www网站视频| 色偷偷91综合久久噜噜| gogo亚洲高清大胆美女人体| 久久这里精品国产99丫e6| 激情国产在线| 久久免费精品日本久久中文字幕| 2021国产在线| 中文日韩欧美| 欧美18视频| 国产1区2区3区精品美女| 欧美精品在欧美一区二区| 国产成人综合av| 亚洲精品一区二区三区四区高清| 欧美暴力喷水在线| 亚洲福利一区二区三区| 国内精品久久久久久久久久久| 日韩一区二区三区不卡视频| 欧美黑粗硬大| 青青草福利视频| a∨色狠狠一区二区三区| 亚洲一区二区国产| 亚洲蜜臀av乱码久久精品| 高清毛片在线观看| 国产小视频你懂的| 美国一级片在线观看| 在线人成动漫视频在线观看| 成人看片爽爽爽| 日本伊人精品一区二区三区介绍| 波多野结衣中文字幕一区| 岛国片在线观看| 午夜裸体女人视频网站在线观看| 欧美精品亚洲精品| 国产精品高潮呻吟视频| 亚洲最大中文字幕| 亚洲精品视频网址| 欧美一区视频| youjizz欧美| 在线看的毛片| 欧美成人se01短视频在线看| 欧美激情一区二区三区四区| 电影天堂久久| 色噜噜狠狠一区二区| 亚洲精品97久久久babes| 神马香蕉久久| 91看片免费版| 老司机午夜福利视频| eeuss草民免费| 狠狠干综合网| 91综合网人人| xxx性欧美| 国产7777777| 国产亚洲一区二区精品| 色婷婷激情久久| 欧美一区二区免费视频| 97av在线影院| av福利在线观看| 国产精品普通话| 91极品视频在线| 日本午夜一区二区| 色综合久久久久综合99| 37pao成人国产永久免费视频| 天堂√最新版中文在线| 国产精品专区h在线观看| 日韩黄色在线观看| 日本va欧美va瓶| 国产亚洲亚洲| 国产成+人+综合+亚洲欧洲| 日韩欧美视频一区二区三区| 日韩高清国产一区在线| 亚洲精品国产精品乱码| 欧美日本一区二区高清播放视频| 成人影院在线免费观看| 红桃视频 国产| 久久国产毛片| 综合av在线| 精品久久久久久久久久久下田| 国产高潮视频在线观看| 在线观看久久久久久| 久久综合影音| 日韩欧美三级一区二区| 黄色小视频在线免费观看| 国产精品久久久久av蜜臀| 亚洲一区二区三区乱码aⅴ蜜桃女| 99免在线观看免费视频高清| 超碰在线图片| 一级黄色录像免费看| 国产在线视频欧美一区二区三区| 久久69国产一区二区蜜臀| 亚洲激情成人网| 免费看毛片的网站| 欧美精品日韩三级| 一本大道东京热无码aⅴ| 欧美另类中文字幕| 懂色av蜜臀av粉嫩av分享吧最新章节| 99久久综合精品| 男的操女的网站| 青青操视频在线播放| 一区二区三区四区不卡视频| 91麻豆精品在线观看| 久久久久成人网站| 超碰国产精品一区二页| 在线观看免费版| 久久久国产精彩视频美女艺术照福利| 人妻熟人中文字幕一区二区| 国产啊啊啊视频在线观看| 69成人免费视频| 国产suv一区二区三区|