打开网页到处都是秀图片的,那么这些图片是如何处理的呢?
一、图片显示
1、html显示图片标签 <img>
img 元素向网页中嵌入一幅图像。
其常用属性有:
请注意,从技术上讲,<img> 标签并不会在网页中插入图像,而是从网页上链接图像。<img> 标签创建的是被引用图像的占位空间。
例:<img height="100" src="http://bbs.landingbj.com/images/qrcode.png" id="qrcode">
2、使用图片作背景background-image
标签作样式设计,使用css最方便。
例:<body style=”background-image: url(/images/.gif)”>
二、图片处理
1、将图片从位置A复制到位置B
①使用流将图片复制
InputStream fis = new FileInputStream("d:/pic/test.jpg");
byte[] b = new byte[1024];
//读取的数据长度
int len=0;
OutputStream fos = new FileOutputStream("d:/pic/test_bak.jpg");
while((len = fis.read(b))!=-1){
fos.write(b,0,len);
}
fos.close();
fis.close();
②使用 ImageIO 将图片复制
使用ImageIO类的静态方法可以执行很多常见的图像I/O操作。
BufferedImage image = null;
image = ImageIO.read(new File("d:/pic/test.jpg"));
if (image != null)
{
ImageIO.write(image, "jpg", new File("d:/pic/test_bak1.jpg"));
}
注:以上代码均只保留核心部分
2、将图片从网络下载到本地
将图片从网络下载到本地,就是数据源的获取方式不同,写文件同上
方法一:
String urlstr=”http://bbs.landingbj.com/images/qrcode.png”;
URL url = new URL(urlstr);
//打开连接
URLConnection con = url.openConnection();
//设置请求超时时间
con.setConnectionTime(5*1000);
InputStream is = con.getInputStream();
方法二:
URL url = new URL(urlstr);
image = ImageIO.read(url);
3、给目标图片添加水印
public static void pressImage(String pressImg, String targetImg,
int x, int y) {
try {
//目标文件
File _file = new File(targetImg);
Image src = ImageIO.read(_file);
int wideth = src.getWidth(null);
int height = src.getHeight(null);
BufferedImage image = new BufferedImage(wideth, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.drawImage(src, 0, 0, wideth, height, null);
//水印文件
File _filebiao = new File(pressImg);
Image src_biao = ImageIO.read(_filebiao);
int wideth_biao = src_biao.getWidth(null);
int height_biao = src_biao.getHeight(null);
g.drawImage(src_biao, (wideth - wideth_biao) / 2,
(height - height_biao) / 2, wideth_biao, height_biao, null);
//水印文件结束
g.dispose();
FileOutputStream out = new FileOutputStream(targetImg);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
4、使用FileUpload控件实现文件上传
common-fileupload组件是apache的一个开源项目之一。用该组件可实现一次上传一个或多个文件,并可限制文件大小。将其commons-fileupload-1.2.2.jar 加入到项目的classpath中
前台页面:
<form action="fileupload" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file" />
<input type="submit" name="submit" value="上传" />
</form>
后台处理核心代码:
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(uploadPath + "a.txt"));
}