读书人

将图片转成二进制并生成Base64编码可

发布时间: 2012-08-29 08:40:14 作者: rapoo

将图片转成二进制并生成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. public class TestImageBinary {
  11. static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
  12. static BASE64Decoder decoder = new sun.misc.BASE64Decoder();
  13. public static void main(String[] args) {
  14. System.out.println(getImageBinary()); //将图片转成base64编码
  15. base64StringToImage(getImageBinary()); //将base64的编码转成图片
  16. }
  17. static String getImageBinary(){
  18. File f = new File("d://1.jpg");
  19. BufferedImage bi;
  20. try {
  21. bi = ImageIO.read(f);
  22. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  23. ImageIO.write(bi, "jpg", baos);
  24. byte[] bytes = baos.toByteArray();
  25. return encoder.encodeBuffer(bytes).trim();
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. return null;
  30. }
  31. static void base64StringToImage(String base64String){
  32. try {
  33. byte[] bytes1 = decoder.decodeBuffer(base64String);
  34. ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
  35. BufferedImage bi1 =ImageIO.read(bais);
  36. File w2 = new File("d://2.png");//可以是jpg,png,gif格式
  37. ImageIO.write(bi1, "jpg", w2);//不管输出什么格式图片,此处不需改动
  38. } catch (IOException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }
1楼llhhyy19899小时前
[e01]

读书人网 >Web前端

热点推荐