常见的html中或css中图片的src赋值为data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/ KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/ LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D这样的代码,这是Data URI scheme,Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到浏览器的的地址栏中并转到,就能看到它了,一张1X36的白灰png图片;
java中相互转换方法:
依赖jar包为:commons-codec-1.3.jar(加密用)
1 /** 2 * 将base64的图片转换为本地文件 3 * @param imgStr base64的图片码 4 * @param path 存储路径 5 * @return 6 */ 7 public static boolean generateImage(String imgStr, String path) { 8 if (imgStr == null){ 9 return false; 10 } 11 12 BASE64Decoder decoder = new BASE64Decoder(); 13 try { 14 // 解密 15 byte[] b = decoder.decodeBuffer(imgStr); 16 // 处理数据 17 for (int i = 0; i < b.length; ++i) { 18 if (b[i] < 0) { 19 b[i] += 256; 20 } 21 } 22 OutputStream out = new FileOutputStream(path); 23 out.write(b); 24 out.flush(); 25 out.close(); 26 return true; 27 } catch (Exception e) { 28 return false; 29 } 30 } 31 32 /** 33 * 将图片转为base64字符串 34 * @param imgFile 图片路径 35 * @return 36 */ 37 public static String getImgStr(String imgFile){ 38 //将图片文件转化为字节数组字符串,并对其进行Base64编码处理 39 InputStream in = null; 40 byte[] data = null; 41 try { 42 in = new FileInputStream(imgFile); 43 data = new byte[in.available()]; 44 in.read(data); 45 in.close(); 46 } catch (Exception e) { 47 // TODO: handle exception 48 e.printStackTrace(); 49 } 50 return new String(Base64.encodeBase64(data)); 51 }
Tale、车车