Base64目前主要用于HTML5、移动开发等不考虑IE6的场景中。
Base64格式
data:[][;charset=][;base64],
Base64 在CSS中的使用
.demoImg{ background-image: url("data:image/jpg;base64,/9j/4QMZRXhpZgAASUkqAAgAAAAL...."); }
Base64 在HTML中的使用
<img width="40" height="30" src="data:image/jpg;base64,/9j/4QMZRXhpZgAASUkqAAgAAAAL...." />
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.*;
public class Base64Img {
public static void main(String[] args) {
// 测试从图片文件转换为Base64编码
String img64Str = getImg64("D:\\tmp\\QQ图片20160401133853.jpg");
System.out.println(img64Str);
// 测试从Base64编码转换为图片文件
// String strImg = "这里放64位编码";
System.out.println(Img64SaveToImgFile(img64Str, "D:\\tmp\\4afbfbedab64034fe3c2af48adc379310a551d74.jpg"));
}
/**
* 图片转换为 img64字符串
* @param imgPath
* @return
*/
public static String getImg64(String imgPath) {
byte[] data = null;
// 读取图片字节数组
try {
InputStream in = new FileInputStream(imgPath);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);// 返回Base64编码过的字节数组字符串
}
/**
* img64字符串 转换为图片
* @param img64Str
* @param imgPath
* @return
*/
public static boolean Img64SaveToImgFile(String img64Str, String imgPath) {
if (img64Str == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] bytes = decoder.decodeBuffer(img64Str);
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {// 调整异常数据
bytes[i] += 256;
}
}
// 生成jpeg图片
OutputStream out = new FileOutputStream(imgPath);
out.write(bytes);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}