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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。