图片水印制作步骤:
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);
本文出自 “涓涓细流” 博客,谢绝转载!