您現在的位置是:電腦技術吧?>? 組裝維修 ??>??動態生成,動態表情生成器??>??正文詳情

動態生成,動態表情生成器

沙詩柳2019-12-20 09:22:17 人圍觀
簡介q動態頭像生成器在web應用中,經常需要動態生成圖片,如實時股市行情、各種統計圖表等。在這種情況下,圖片只能在服務器內存中動態生成并發送給用戶,然后在瀏覽器中顯示。實際

在Web應用中,經常需要動態生成圖片,比如實時股市行情,各種統計圖等等,這種情況下,圖片只能在服務器內存中動態生成并發送給用戶,然后在瀏覽器中顯示出來。

本質上,瀏覽器向服務器請求靜態圖片如JPEG時,服務器返回的仍然是標準的http響應,只不過http頭的contentType不是text/html,而是image/jpeg而已,因此,我們在Servlet中只要設置好contentType,然后發送圖像的數據流,瀏覽器就能正確解析并顯示出圖片。

在Java中,java.awt和java.awt.image包提供了基本的繪制圖像的能力,我們可以在內存中繪制好需要的圖形,然后編碼成jpeg或其他圖像格式,最后發送相應給瀏覽器即可。

下面是使用Servlet動態創建圖像的詳細步驟:1.創建BufferedImage對象,該對象存在內存中,負責保存繪制的圖像;2.創建Graphics2D對象,該對象負責繪制所需的圖像;3.當繪制完成后,調用com.sun.image.codec.jpeg包的JPEG編碼器對其編碼;4.最后將編碼后的數據輸出至HttpResponse即可。

注意com.sun.image.codec.jpeg包位于JDK目錄的rt.jar包中,它不是公開的API,需要將rt.jar復制到web應用程序的WEB-INF/lib下。

我們先創建一個最簡單的Servlet:

public class CreateImageServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  response.setContentType(image/jpeg); }}

我們首先設置了response的contentType為image/jpeg,這樣瀏覽器就可以正確識別。

然后,創建一個大小為100x100的BufferedImage對象,準備繪圖:

int width = 100;int height = 100;BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

接著,BufferedImage對象中獲取Graphics2D對象并繪圖:

Graphics2D g = bi.createGraphics();// 創建Graphics2D對象// 填充背景為白色:g.setBackground(Color.BLUE);g.clearRect(0, 0, width, height);// 設置前景色:g.setColor(Color.RED);// 開始繪圖:g.drawLine(0, 0, 99, 99);// 繪制一條直線// 繪圖完成,釋放資源:g.dispose();bi.flush();

然后,對BufferedImage進行JPEG編碼:

JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(out);JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);param.setQuality(1.0f, false);encoder.setJPEGEncodeParam(param);try{ encoder.encode(bi);}catch(IOException ioe){ ioe.printStackTrace();}

編碼后的JPEG圖像直接輸出到了out對象中,我們只要傳入response. getOutputStream()就可以直接輸出到HttpResponse中。

下面是完整的代碼:

package com.crackj2ee.web.util;import java.io.*;import java.awt.*;import java.awt.image.*;import javax.servlet.*;import javax.servlet.http.*;import com.sun.image.codec.jpeg.*;/*** @author Liao Xue Feng*/public class CreateImageServlet extends HttpServlet{ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {  response.setContentType(image/jpeg);  createImage(response.getOutputStream()); } private void createImage(OutputStream out){  int width = 100;  int height = 100;  BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  Graphics2D g = bi.createGraphics();  // set background:  g.setBackground(Color.BLUE);  g.clearRect(0, 0, width, height);  // set fore color:  g.setColor(Color.RED);  // start draw:  g.drawLine(0, 0, 99, 199);  // end draw:  g.dispose();  bi.flush();  // encode:  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);  param.setQuality(1.0f, false);  encoder.setJPEGEncodeParam(param);  try {   encoder.encode(bi);  }  catch(IOException ioe) {   ioe.printStackTrace();  } }}

最后將這個Servlet編譯,注冊到web.xml中,映射路徑為/CreateImage,寫一個簡單的index.html測試:

<html><head></head><body><img src=CreateImage></body></html>

如能正確顯示,那么就大功告成了。

版權聲明:本文由 沙詩柳 整理編輯。

原標題:動態文字,動態gif

轉載注明出處:http://www.dn9ww09s.icu/assemble/15575.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • php類的方法,php教程

    php類的方法,php教程 相關圖片php入門在PHP5之前,如果每個PHP框架都想實現類的自動加載,通常會根據某個約定自己實現一個遍歷目錄,并自動加載所有符合約定規則的類或函數。當然,在PHP 5之前,面php是什么...

  • 異步獲取無阻,echarts異步獲取數據

    異步獲取無阻,echarts異步獲取數據 相關圖片js異步請求1) 要從指定的URL獲取相應的流,因為要獲取網絡資源,必須首先擁有URL。在這里,我首先封裝了通過打開URL連接獲得的InputStream,這樣interf真正的異步...

  • 明日之后水紋特效,視頻局部水紋特效

    明日之后水紋特效,視頻局部水紋特效 相關圖片pr水波紋特效在哪/*腳本:zhfi特別感謝:restools,x-star*/!Addplugindir。!添加目錄。!包括mui2.nsh------------------ae波浪特效...

  • 項目管理器的功能,文件管理器哪個好用

    項目管理器的功能,文件管理器哪個好用 相關圖片安卓文件管理器特定的SQL企業管理器。(請注意:只有您擁有Microsoft office2000或XP許可證,這些軟件才是免費的。)許多使用SQL server的公司也使用服務器管理器怎么打開...

  • 刪除分區會刪除數據嗎,數據庫分區

    刪除分區會刪除數據嗎,數據庫分區 相關圖片分區損壞恢復數據創建分區表后,可以直接將數據插入分區表,而不管數據放在哪個物理數據表中。在上一篇文章的后面,我們將幾個數據插入到創建的分區表中:50行=15名稱=code類=c移...

  • 什么是數據庫,數據庫有什么用

    什么是數據庫,數據庫有什么用 相關圖片數據庫類型對于SQL新手來說,空值的概念常常會引起混淆。他們經常認為null與空字符串“”是同一回事。事實并非如此。例如,以下語句完全不同:MySQL insert in數據庫有哪些類型...

  • fplot用法示例,vbarray的用法

    fplot用法示例,vbarray的用法 相關圖片groupbyhiving用法本文主要介紹Oracle merge into的使用。您可以參考以下情況。如果表中已經存在一段數據,請更新它。如果不存在,插入新數據。如果不使用Oracle提供說的用法...

  • 在數組中查找指定元素,數組添加元素

    在數組中查找指定元素,數組添加元素 相關圖片怎么刪除數組中的某個元素本文的示例描述了JavaScript判斷數組是否包含指定元素的方法。與您分享以供參考。具體如下:該代碼通過prototype定義數組方法,以便調用contain如何刪除數組中...

  • js 數組對象排序,js對象數組進行快去排序

    js 數組對象排序,js對象數組進行快去排序 相關圖片json對象數組asp.net中的ArrayList對象是包含單個數據值的數據項的集合。如何創建ArrayList對象以及如何對ArrayList中數據項的內容進行排序?下面是數組對象去重...

  • 迭代算法的例子,迭代重建算法

    迭代算法的例子,迭代重建算法 相關圖片迭代計算什么意思在網頁上實現樹結構有點麻煩。在一個新的MIS系統的開發中,我們的項目組廣泛使用了樹形結構,如人員的選擇和單元的選擇。該MIS系統的數據庫是Oracle 9i,o斐波那契...

熱評文章

  • aspjs格式化,asp格式化2百位

    aspjs格式化,asp格式化2百位 相關圖片asp文件轉換格式本文主要介紹了asp.net頁面中時間格式的例子。您可以參考asp.net頁面以Eval格式顯示時間,格式代碼如下:table trtd style=widthasp時間格式...

  • 復雜的事情簡單做例子,簡單生活的例子

    復雜的事情簡單做例子,簡單生活的例子 相關圖片堅持的例子一個比較簡單的asp.net文件上傳程序代碼,可以上傳rar、zip、TXT、JPG、GIF、DOC等格式的文件。您可以直接復制代碼并將其保存為ASPX文件進行偽代碼的簡單例子...

  • 自定義狀態欄怎么設置,自定義狀態欄不見了

    自定義狀態欄怎么設置,自定義狀態欄不見了 相關圖片華為自定義狀態欄公司的開發項目需要在狀態欄上增加程序下載的進度條。對于之前編寫的程序,由于自定義狀態欄的邊框和子視圖的邊框和變換都是根據iPad的方向設置的,所以有些...

  • 數據庫分區表有必要嗎,數據庫分區表類型

    數據庫分區表有必要嗎,數據庫分區表類型 相關圖片sql數據庫分區Oracle數據庫如何查看分區表信息?我想知道你是否總結了這些知識。接下來,我們創建兩個表test和GPRS?細胞體積?努力做實驗。腳本如下:create tadb2分區表創建...

  • html字符串轉化為,讓字符串轉成html

    html字符串轉化為,讓字符串轉成html 相關圖片js解析html字符串本文主要介紹了JavaScript檢測字符串中是否包含HTML標記的實現方法。本文直接給出了實現代碼。對于您的朋友,請參考下面的函數代碼:/**HTML標記是否js字符串轉html標簽...

  • 如何建立空數據庫,怎么創建空數據庫

    如何建立空數據庫,怎么創建空數據庫 相關圖片建立空數據庫的快捷鍵怎么新建空數據庫...

  • 如何建立空數據庫,怎么創建空數據庫

    如何建立空數據庫,怎么創建空數據庫 相關圖片建立空數據庫的快捷鍵現在我們知道了在構建數據庫之前應該注意的問題,讓我們從最基本的新空數據庫開始了解access數據庫的結構。在access 2000中,單擊access窗口左上角怎么新建空數據...

  • navicat怎么連接mysql,navicat連接不上mysql

    navicat怎么連接mysql,navicat連接不上mysql 相關圖片mysql navicat最新版本的Navicat for MySQL有自己的注冊代碼。它已經被綠化了。您可以通過將其解壓縮到任何目錄來運行它。Navicat premium是一個多連接navicat連接mysql...

  • 安裝軟件說端口號被占用解決方法,解決端口占用

    安裝軟件說端口號被占用解決方法,解決端口占用 相關圖片8080端口號被占用本文主要介紹Android開發中端口號占用問題的解決方案。本文給出了一種簡單實用的方法來解決這個煩人的問題。你可以參考Android開發中的端口號占用問題,這個查看8...

  • 安全隱患措施有哪些,身邊的安全隱患及措施

    安全隱患措施有哪些,身邊的安全隱患及措施 相關圖片避免安全隱患隨著Internet的發展,web技術日新月異。ASP(active server pages)作為繼通用網關接口(CGI)之后的一種典型的服務器端Web設計技我身邊的安全隱患及改正措施...

關注微信

变脸官网查询