java将图片转为base64返回给前端
本文实例为大家分享了java将图片转为base64返回给前端的具体代码,供大家参考,具体内容如下
一、controller端代码
@RequestMapping(value="/captcha")
publicvoidimagecode(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{
JSONObjectobject=newJSONObject();
CaptchaGeneratorvcg=newCaptchaGenerator();
Stringvcode=vcg.generatorVCode();
BufferedImagevcodeImage=vcg.generatorVCodeImage(vcode,true);
response.setDateHeader("Expires",0);
response.setHeader("Cache-Control","no-store,no-cache,must-revalidate");
response.addHeader("Cache-Control","post-check=0,pre-check=0");
response.setHeader("Pragma","no-cache");
ByteArrayOutputStreamoutputStream=newByteArrayOutputStream();
response.addHeader("code",vcode.toLowerCase());
try{
ImageIO.write(vcodeImage,"png",outputStream);
BASE64Encoderencoder=newBASE64Encoder();
Stringbase64=encoder.encodeBuffer(outputStream.toByteArray()).trim();
base64=base64.replaceAll("\n","").replaceAll("\r","");
object.put("code","data:image/jpg;base64,"+base64);
response.getWriter().write(object.toString());
}catch(IOExceptione){
response.getWriter().write("");
}finally{
if(outputStream!=null){
outputStream.flush();
outputStream.close();
response.getWriter().close();
}
}
}
二、生成验证码的代码
(从某博客拷过来直接用的)
packagecom.kinth.security.web.util;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjava.awt.image.BufferedImage;
importjava.util.Random;
/**
*验证码生成器
*
*
*/
publicclassCaptchaGenerator{
/**
*验证码来源
*/
finalprivatechar[]code={
'2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j',
'k','m','n','p','q','r','s','t','u','v',
'w','x','y','z','A','B','C','D','E','F',
'G','H','J','K','L','M','N','P','Q','R',
'S','T','U','V','W','X','Y','Z'
};
/**
*字体
*/
finalprivateString[]fontNames=newString[]{
"黑体","宋体","Courier","Arial",
"Verdana","Times","Tahoma","Georgia"};
/**
*字体样式
*/
finalprivateint[]fontStyles=newint[]{
Font.BOLD,Font.ITALIC|Font.BOLD
};
/**
*验证码长度
*默认4个字符
*/
privateintvcodeLen=4;
/**
*验证码图片字体大小
*默认17
*/
privateintfontsize=21;
/**
*验证码图片宽度
*/
privateintwidth=(fontsize+1)*vcodeLen+10;
/**
*验证码图片高度
*/
privateintheight=fontsize+12;
/**
*干扰线条数
*默认3条
*/
privateintdisturbline=3;
publicCaptchaGenerator(){}
/**
*指定验证码长度
*@paramvcodeLen验证码长度
*/
publicCaptchaGenerator(intvcodeLen){
this.vcodeLen=vcodeLen;
this.width=(fontsize+1)*vcodeLen+10;
}
/**
*生成验证码图片
*@paramvcode要画的验证码
*@paramdrawline是否画干扰线
*@return
*/
publicBufferedImagegeneratorVCodeImage(Stringvcode,booleandrawline){
//创建验证码图片
BufferedImagevcodeImage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphicsg=vcodeImage.getGraphics();
//填充背景色
g.setColor(newColor(246,240,250));
g.fillRect(0,0,width,height);
if(drawline){
drawDisturbLine(g);
}
//用于生成伪随机数
Randomran=newRandom();
//在图片上画验证码
for(inti=0;i
三、前端显示
<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Inserttitlehere
$(function(){
refreshimg();
})
functionrefreshimg(){
$.ajax({
type:"POST",
dataType:"json",
url:"../article/captcha",
success:function(data){
console.log('base64='+data.codePic);
$('#randomImage').attr('src',data.code);
},
error:function(){
}
});
$("#randomImage").click(refreshimg)
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。