先看一段代码:
<img src="data:image/jpg;base64,/9j/iVBORw0KGgoAAAANSUhE...lFTkSuQmCC" />
那这些代码是如何生成的?
这些代码“data:image/jpg;base64,/9j/iVBORw0KGgoAAAANSUhE……” 就是一张图片的Data URL,就是利用base64编码把图片数据翻译成标准ASCII字符。
可以上http://base64decode.net/base64-image-decoder, 利用在线base64图片解码工具把其转换成图片
等同于:
<img src="http://www.oschina.net/img/logo_s2.png"/>
Data URL是在本地直接绘制图片,不是从服务器加载,所以节省了HTTP连接,起到加速网页的作用。
语法:
data:image/jpg; 声明数据协议及类型名称
base64, 编码形式为base64
/9j/iVBORw0KGgoAAAANSUhE…… base64编码结果
使用Google kaptcha 生成验证码图片
Java Servlet
public class KpServlet extends AbstractServlet
{
private Producer kpProducer = null;
@Override
public void init(ServletConfig conf) throws ServletException
{
......
this.kaptchaProducer = config.getProducerImpl();
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
{
resp.setContentType("image/jpeg");
String text= this.kpProducer.createText();
req.getSession().setAttribute("kaptcha-cookie", Util.encrypt(text, Configuration.getProperty("MD5"), Configuration.getProperty("xxyy")));
BufferedImage bi = this.kpProducer.createImage(text);
String imageStr = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try
{
ImageIO.write(bi, "jpeg", baos);