将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片

data格式的Url最直接的好处是,这些Url原本会引起一个新的网络访问,因为那里是一个网页的地址,现在不会有新的网络访问了,因为现在这里是网页的内容。这样做,会减少服务器的负载,当然同时也增加了当前网页的大小。所以对“小”数据特别有好处。

  另外听说这种方式可以将一些敏感的图片放进网页中...挺好玩的.....

 

    一、 在网页中查看图片的方法为:

     

[html] view plaincopy
  1. <body>  
  2. <span><img width=100 height=100 src="data:image/gif;base64,(此处填图片转成base64编码后的编码)"/></span>  
  3. </body>  

    由于base64编码太占用篇幅因此仅仅用括号说明了一下。

    二、用Java将图片编码的代码,与将base64的编码转成图片的Java代码:

    

[java] view plaincopy
  1. package base64;  
  2. import java.awt.image.BufferedImage;    
  3. import java.io.ByteArrayInputStream;    
  4. import java.io.ByteArrayOutputStream;    
  5. import java.io.File;    
  6. import java.io.IOException;    
  7. import javax.imageio.ImageIO;    
  8. import sun.misc.BASE64Decoder;    
  9. import sun.misc.BASE64Encoder;    
  10.     
  11. public class TestImageBinary {    
  12.     static BASE64Encoder encoder = new sun.misc.BASE64Encoder();    
  13.     static BASE64Decoder decoder = new sun.misc.BASE64Decoder();    
  14.         
  15.     public static void main(String[] args) {    
  16.             System.out.println(getImageBinary());  //将图片转成base64编码     
  17.         base64StringToImage(getImageBinary()); //将base64的编码转成图片   
  18.     }    
  19.         
  20.     static String getImageBinary(){    
  21.         File f = new File("d://1.jpg");           
  22.         BufferedImage bi;    
  23.         try {    
  24.             bi = ImageIO.read(f);    
  25.             ByteArrayOutputStream baos = new ByteArrayOutputStream();    
  26.             ImageIO.write(bi, "jpg", baos);    
  27.             byte[] bytes = baos.toByteArray();    
  28.                 
  29.             return encoder.encodeBuffer(bytes).trim();    
  30.         } catch (IOException e) {    
  31.             e.printStackTrace();    
  32.         }    
  33.         return null;    
  34.     }    
  35.         
  36.     static void base64StringToImage(String base64String){    
  37.         try {    
  38.             byte[] bytes1 = decoder.decodeBuffer(base64String);                  
  39.             ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);    
  40.             BufferedImage bi1 =ImageIO.read(bais);    
  41.             File w2 = new File("d://2.png");//可以是jpg,png,gif格式    
  42.             ImageIO.write(bi1, "jpg", w2);//不管输出什么格式图片,此处不需改动    
  43.         } catch (IOException e) {    
  44.             e.printStackTrace();    
  45.         }    
  46.     }    
  47.     
  48. }
原文地址:https://www.cnblogs.com/shipeng22022/p/4614155.html