data格式的Url最直接的好处是,这些Url原本会引起一个新的网络访问,因为那里是一个网页的地址,现在不会有新的网络访问了,因为现在这里是网页的内容。这样做,会减少服务器的负载,当然同时也增加了当前网页的大小。所以对“小”数据特别有好处。
另外听说这种方式可以将一些敏感的图片放进网页中...挺好玩的.....
一、 在网页中查看图片的方法为:
- <body>
- <span><imgwidth=100height=100src="data:image/gif;base64,(此处填图片转成base64编码后的编码)"/></span>
- </body>
由于base64编码太占用篇幅因此仅仅用括号说明了一下。
二、用Java将图片编码的代码,与将base64的编码转成图片的Java代码:
- packagebase64;
- importjava.awt.image.BufferedImage;
- importjava.io.ByteArrayInputStream;
- importjava.io.ByteArrayOutputStream;
- importjava.io.File;
- importjava.io.IOException;
- importjavax.imageio.ImageIO;
- importsun.misc.BASE64Decoder;
- importsun.misc.BASE64Encoder;
- publicclassTestImageBinary{
- staticBASE64Encoderencoder=newsun.misc.BASE64Encoder();
- staticBASE64Decoderdecoder=newsun.misc.BASE64Decoder();
- publicstaticvoidmain(String[]args){
- System.out.println(getImageBinary());//将图片转成base64编码
- base64StringToImage(getImageBinary());//将base64的编码转成图片
- }
- staticStringgetImageBinary(){
- Filef=newFile("d://1.jpg");
- BufferedImagebi;
- try{
- bi=ImageIO.read(f);
- ByteArrayOutputStreambaos=newByteArrayOutputStream();
- ImageIO.write(bi,"jpg",baos);
- byte[]bytes=baos.toByteArray();
- returnencoder.encodeBuffer(bytes).trim();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- returnnull;
- }
- staticvoidbase64StringToImage(Stringbase64String){
- try{
- byte[]bytes1=decoder.decodeBuffer(base64String);
- ByteArrayInputStreambais=newByteArrayInputStream(bytes1);
- BufferedImagebi1=ImageIO.read(bais);
- Filew2=newFile("d://2.png");//可以是jpg,png,gif格式
- ImageIO.write(bi1,"jpg",w2);//不管输出什么格式图片,此处不需改动
- }catch(IOExceptione){
- e.printStackTrace();
- }
- }
- }