完全可以,程序如下,這里把圖片和程序放在一塊,不放在一起的話。
昌寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
代碼Icon?icon=new?ImageIcon("1.gif");//要給出圖片的完整的路徑。
圖片資源:
import?java.awt.*;
import?javax.swing.*;
public?class?JFrameTest?extends?JFrame{
/**
*?@param?args
*/
private?static?final?long?serialVersionUID=1L;
JFrameTest(String?name){
super(name);
this.setSize(200,?200);//設置窗口大小。
this.setBackground(Color.DARK_GRAY);//設置背景顏色。
this.setLayout(new?FlowLayout());//設置順序布局。
Container?con=this.getContentPane();//獲取容器。
//設置按鈕,為按鈕添加圖片。
Icon?icon=new?ImageIcon("1.gif");//根據(jù)路徑取出圖片。
JButton?button=new?JButton("帶圖片的按鈕",icon);
con.add(button);//添加按鈕。
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//設置默認的關閉方式。
}
public?static?void?main(String[]?args)?{
JFrameTest?test=new?JFrameTest("按鈕");
? test.setVisible(true);
}
}
運行結果:
實現(xiàn)思路:無論是何種類型,都是轉換為流的形式進行的文件傳輸和存儲。
可以通過BufferedReader 流的形式進行流緩存,之后通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
OutputStreamWriter pw = null;//定義一個流
try {
String file = "D:/test/test.GIF";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
pw = new OutputStreamWriter(new FileOutputStream(“D:/New.GIF”),"GBK");//確認流的輸出文件和編碼格式,此過程創(chuàng)建了“test.GIF”實例
while ((str = bre.readLine())!= null) // 判斷最后一行不存在,為空結束循環(huán)
{
pw.write(str);//將要寫入文件的內容,可以多次write
};
bre.close();
pw.close();//關閉流
備注:文件流用完之后必須及時通過close方法關閉,否則會一直處于打開狀態(tài),直至程序停止,增加系統(tǒng)負擔。
你好,
Servlet類:
import?java.io.IOException;
import?javax.servlet.ServletException;
import?javax.servlet.http.HttpServlet;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
public?class?ImageServlet?extends?HttpServlet?{
private?static?final?long?serialVersionUID?=?1L;
@Override
public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
throws?ServletException,?IOException?{
response.setContentType("image/gif");//設置相應類型,告訴瀏覽器輸出的內容為圖片
response.setHeader("Pragma",?"No-cache");//設置響應頭信息,告訴瀏覽器不要緩存此內容
response.setHeader("Cache-Control",?"no-cache");
response.setDateHeader("Expire",?0);
RandomValidateCode?randomValidateCode?=?new?RandomValidateCode();
try?{
randomValidateCode.getRandcode(request,?response);//輸出圖片方法
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
@Override
public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)
throws?ServletException,?IOException?{
doGet(request,?response);
}
}
生成圖片的類:
import?java.awt.Color;
import?java.awt.Font;
import?java.awt.Graphics;
import?java.awt.image.BufferedImage;
import?java.util.Random;
import?javax.imageio.ImageIO;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?javax.servlet.http.HttpSession;
public?class?RandomValidateCode?{
public?static?final?String?RANDOMCODEKEY?=?"RANDOMVALIDATECODEKEY";//放到session中的key
private?Random?random?=?new?Random();
private?String?randString?=?"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//隨機產(chǎn)生的字符串
private?int?width?=?80;//圖片寬
private?int?height?=?26;//圖片高
private?int?lineSize?=?25;//干擾線數(shù)量
private?int?stringNum?=?4;//隨機產(chǎn)生字符數(shù)量
/**
*?生成隨機圖片
*/
public?void?getRandcode(HttpServletRequest?request,
HttpServletResponse?response)?{
HttpSession?session?=?request.getSession();
BufferedImage?image?=?new?BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
Graphics?g?=?image.getGraphics();
g.fillRect(0,?0,?width,?height);
g.setFont(new?Font("Times?New?Roman",Font.ROMAN_BASELINE,18));
g.setColor(getRandColor(180,?233));
//繪制干擾線
for(int?i=0;i=lineSize;i++){
drowLine(g);
}
//繪制隨機字符
String?randomString?=?"";
for(int?i=1;i=stringNum;i++){
randomString=drowString(g,randomString,i);
}
session.removeAttribute(RANDOMCODEKEY);
session.setAttribute(RANDOMCODEKEY,?randomString);
g.dispose();
try?{
ImageIO.write(image,?"JPEG",?response.getOutputStream());
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
//?-------------?private?methods?-------------
/*
*?獲得字體
*/
private?Font?getFont(){
return?new?Font("Fixedsys",Font.CENTER_BASELINE,18);
}
/*
*?獲得顏色
*/
private?Color?getRandColor(int?fc,int?bc){
if(fc??255)
fc?=?255;
if(bc??255)
bc?=?255;
int?r?=?fc?+?random.nextInt(bc-fc-16);
int?g?=?fc?+?random.nextInt(bc-fc-14);
int?b?=?fc?+?random.nextInt(bc-fc-18);
return?new?Color(r,g,b);
}
/*
*?繪制字符串
*/
private?String?drowString(Graphics?g,String?randomString,int?i){
g.setFont(getFont());
g.setColor(new?Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));
String?rand?=?String.valueOf(getRandomString(random.nextInt(randString.length())));
randomString?+=rand;
g.translate(random.nextInt(3),?random.nextInt(3));
g.drawString(rand,?13*i,?16);
return?randomString;
}
/*
*?繪制干擾線
*/
private?void?drowLine(Graphics?g){
int?x?=?random.nextInt(width);
int?y?=?random.nextInt(height);
int?xl?=?random.nextInt(13);
int?yl?=?random.nextInt(15);
g.drawLine(x,?y,?x+xl,?y+yl);
}
/*
*?獲取隨機的字符
*/
private?String?getRandomString(int?num){
return?String.valueOf(randString.charAt(num));
}
}
網(wǎng)頁名稱:java制作gif代碼 gif,制作
本文鏈接:http://chinadenli.net/article18/hpejgp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、網(wǎng)站設計、微信公眾號、微信小程序、ChatGPT、Google
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)