java 實(shí)現(xiàn)輸出隨機(jī)圖片實(shí)例代碼
java 實(shí)現(xiàn)輸出隨機(jī)圖片實(shí)例代碼
輸出隨機(jī)圖片(CAPTCHA圖像):Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自動(dòng)區(qū)分計(jì)算機(jī)和人類的測(cè)試)
相關(guān)主要類(JDK 查看API)
BufferedImage:內(nèi)存圖像
Graphics:畫(huà)筆
ImageIO:輸出圖像
放在html頁(yè)面上<img src/>
注意:瀏覽器默認(rèn)會(huì)緩存圖片
public static int WIDTH = 120;
public static int HEIGHT = 25;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//創(chuàng)建內(nèi)存圖像
BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
//勾勒?qǐng)D像
Graphics graphics = image.getGraphics();
//設(shè)置背景
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, WIDTH, HEIGHT);
//設(shè)置邊框
graphics.setColor(Color.BLUE);
graphics.drawRect(1, 1, WIDTH-2, HEIGHT-2);
//畫(huà)干擾線
graphics.setColor(Color.YELLOW);
for(int i=0;i<8;i++){
int xStart = new Random().nextInt(WIDTH);
int yStart = new Random().nextInt(HEIGHT);
int xEnd = new Random().nextInt(WIDTH);
int yEnd = new Random().nextInt(HEIGHT);
graphics.drawLine(xStart, yStart, xEnd, yEnd);
}
//寫(xiě)隨機(jī)數(shù)
graphics.setColor(Color.RED);
int x = 5;
for(int i=0;i<4;i++){
graphics.drawString(new Random().nextInt(9)+"", x, 20);
x+=30;
}
response.setContentType("image/jpeg");//設(shè)置響應(yīng)格式
ImageIO.write(image, "jpeg", response.getOutputStream());
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Java生產(chǎn)1-100的隨機(jī)數(shù)簡(jiǎn)單實(shí)例(分享)
- java隨機(jī)驗(yàn)證碼生成實(shí)現(xiàn)實(shí)例代碼
- Java生成隨機(jī)數(shù)的方法
- Java 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能簡(jiǎn)單實(shí)例
- java實(shí)現(xiàn)隨機(jī)輸出300題四則運(yùn)算
- java隨機(jī)生成8位數(shù)授權(quán)碼的實(shí)例
- Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼具體代碼
- Java中隨機(jī)數(shù)的產(chǎn)生方式與原理詳解
相關(guān)文章
Java阻塞延遲隊(duì)列DelayQueue原理及使用詳解
這篇文章主要介紹了Java阻塞延遲隊(duì)列DelayQueue原理及使用詳解,阻塞隊(duì)列是一個(gè)支持兩個(gè)附加操作的隊(duì)列,這兩個(gè)附加的操作是:在隊(duì)列為空時(shí),從隊(duì)列中獲取元素的消費(fèi)者線程會(huì)一直等待直到隊(duì)列變?yōu)榉强?需要的朋友可以參考下2023-12-12
springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的全過(guò)程
我們?cè)陂_(kāi)發(fā)中,調(diào)用第三方接口時(shí),往往是提交數(shù)據(jù),要異步去獲取數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01
springboot使用redis對(duì)單個(gè)對(duì)象進(jìn)行自動(dòng)緩存更新刪除的實(shí)現(xiàn)
本文主要介紹了springboot使用redis對(duì)單個(gè)對(duì)象進(jìn)行自動(dòng)緩存更新刪除的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
解決@RequestBody使用不能class類型匹配的問(wèn)題
這篇文章主要介紹了解決@RequestBody使用不能class類型匹配的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
java實(shí)現(xiàn)酷狗音樂(lè)臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法
這篇文章主要介紹了java實(shí)現(xiàn)酷狗音樂(lè)臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法,涉及java針對(duì)文件操作的相關(guān)技巧,需要的朋友可以參考下2016-08-08
Spring生命周期回調(diào)與容器擴(kuò)展詳解
這篇文章主要介紹了Spring生命周期回調(diào)與容器擴(kuò)展詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
關(guān)于elcipse 安裝lombok插件解決 @Slf4j 等找不到log變量問(wèn)題
這篇文章主要介紹了關(guān)于elcipse 安裝lombok插件解決 @Slf4j 等找不到log變量問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
在logback.xml中自定義動(dòng)態(tài)屬性的方法
這篇文章主要介紹了在logback.xml中自定義動(dòng)態(tài)屬性的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08

