圖片水印製作步驟:
1.創建ImageIcon對象,加載圖片
2.創建虛擬畫布BufferImage
3.獲取畫筆getGraphoics()
4.繪製圖片
5.如何是相應在服務器端則必須設置響應格式 response.setContextType("image/png") 默認爲("text/html") 其作用是提示瀏覽器返回的是一張圖片
6.使用ImagIo.write() 輸出
圖片水印製作代碼實例:
//a. 創建ImageIcon對象
ImageIcon icon = new ImageIcon(super.getServletContext().getRealPath("/")+"uploadFiles\\Azul.jpg");//參數爲圖片全路徑
//b. 創建虛擬畫布
BufferedImage bimg = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_3BYTE_BGR); 參數 1 得到圖片的寬度 2 圖片高度 3畫布的參數(通常用這個)
//c. 獲取畫筆
Graphics g = bimg.getGraphics();
//d.繪製圖形
g.drawImage(icon.getImage(), 0, 0, null);參數 1圖片 2、3 開始繪製圖片的初始位置 4 是否改變圖片形狀 null 爲不改變
// g.setFont(new Font("楷體", Font.BOLD, 20));//設置字體樣式 大小
// g.setColor(Color.RED);//字體顏色
g.drawString("版權歸XXXX所有,翻版必究!!!", 10, 20); //水印的字符串繪製在圖片上的 x y 位置
g.drawString("http://www.baidu.com", 10, 40);
g.dispose();// 銷燬畫筆
//e. 設置相應的格式
response.setContentType("image/png");
//f. 輸出文件
ImageIO.write(bimg, "jpg", response.getOutputStream()); //畫布 圖片格式 輸出流
如果需要把圖片輸出則最後一步:
ImageIO.write(bimg, "jpg", new FileoutputStream(new file("輸出路徑"))); //畫布 圖片格式 輸出圖片保存路徑
文件的上傳和下載
上傳步驟:
1.修改表單的參數 method="post" enctype="multtipart/form-data" (複雜的表單數據)
2.導入jspSmartUpload.jar 組建
3.上傳文件:
a.創建上傳對象
b.上傳對象初始化
c.調用upload 上傳
d.調用save保存文件
代碼實例:
//上傳文件 jsp中
SmartUpload smart = new SmartUpload();
//初始化
smart.initialize(pageContext);
//調用upload()開始上傳
smart.upload();
//保存文件
//int count = smart.save("/uploadFiles");//保存的路徑
//out.println("上傳文件的個數:"+count);
//顯示上傳文件的信息?Files,File
Files fs = smart.getFiles();//得到上傳的所有文件
for(int i=0;i<fs.getCount();i++){
File f = fs.getFile(i);
if(!f.isMissing()){ //如果選中了並上傳了 isMissing 沒有選中上傳
String newfileName = System.currentTimeMillis()+f.getFileName();//爲防止上傳的文件重名
f.saveAs("/uploadFiles/"+newfileName);//文件的另存
out.println("文件名:"+ f.getFileName()+"<br />");
out.println("文件路徑:"+ f.getFilePathName()+"<br />");
out.println("文件大小:"+ f.getSize()+"<br />");
out.println("後綴名:"+ f.getFileExt()+"<br /><hr />");
}
}
文件下載步驟:
注意:由於使用下載組建、必須修正out對象,才能正確下載
1.創建smartUpload 對象
2.初始化 smart.initialie(super.getServlertConfg(),request,response);
3.設置強制下載(爲了避免瀏覽器能解析的文件被瀏覽器解析了而不能點擊下載)
setContent.DisPosition(null);
4.下載文件
a.解決中文亂碼
1.得到要下載文件的文件名(下載頁面傳遞)
2.get傳單中文
文件名=new String (文件名.getBytes("iso-8859-1"),"gbk");
downloadFile("文件路徑");
代碼實例:jsp
//獲取webroot目錄下的文件夾
File f = new File(application.getRealPath("/")+"uploadFiles");
//out.println(f.getAbsolutePath());
File[] rs = f.listFiles();
//如果瀏覽器能夠解析的,直接打開;否則,提示下載
for(int i=0;i<rs.length;i++){
File cf = rs[i];
//out.println("<a href='uploadFiles/"+cf.getName()+"'>"+cf.getName()+"</a><br />");
out.println("<a href='download.jsp?fname="+cf.getName()+"'>"+cf.getName()+"</a><br />");
}
//注意,特別注意,一定要注意;由於使用了下載組件,必須修正out對象,才能正確下載文件
out.clear();
out = pageContext.pushBody();
//創建對象
SmartUpload smart = new SmartUpload();
//初始化
smart.initialize(pageContext);
//設置強制下載文件(而不是解析文件)
smart.setContentDisposition(null);
String fname = request.getParameter("fname");
//get傳遞中文
fname = new String(fname.getBytes("iso-8859-1"),"gbk");
//下載文件
smart.downloadFile("/uploadFiles/"+fname);