验证码的变换
来源:互联网 发布:淘宝买花粉什么牌子 编辑:程序博客网 时间:2024/06/07 01:28
//验证码public String imageCode() throws IOException{//获得验证码随机数String code = ImageUtil1.getRandomCode(4);BufferedImage img = ImageUtil1.createImage(code);ValueStackUtil.setSessionAttribute("imgCode", code);ImageIO.write(img, "png", ServletActionContext.getResponse().getOutputStream());return null;}点击验证码变换<tr><td valign="middle" align="right">验证码:<img id="num" src="<s:url value='/user/user_imageCode'/>" onclick='this.src=this.src+"?c="+Math.random()'/></td><td valign="middle" align="left"><input id="code" type="text" required="true" class="inputgri" name="code" /></td></tr>点击换一张更换验证码<script type="text/javascript">function fun(){var img1 = document.getElementById("num");img1.src = "<s:url value='/user/user_imageCode'/>;" + new Date(); } </script><tr><td valign="middle" align="right">验证码:<img id="num" src="<s:url value='/user/user_imageCode'/>" /><a href="javascript:void(0)" onclick="fun()">换一张</a></td><td valign="middle" align="left"><input type="text" class="inputgri" name="code" /></td></tr>验证码的util方法:
public class ImageUtil {public static String getRandomCode(int n){String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";int len = str.length();StringBuffer sb = new StringBuffer();Random r = new Random();for(int i=0;i<n;i++){sb.append(str.charAt(r.nextInt(len)));}return sb.toString();} public static BufferedImage createImage(String securityCode){ int codeLength = securityCode.length();//验证码长度 int fontSize = 20;//字体大小 int fontWidth = fontSize+1; //图片宽高 int width = codeLength*fontWidth+60; int height = fontSize*2; //图片 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); g.setColor(Color.WHITE);//设置背景色 g.fillRect(0, 0, width, height);//填充背景 g.setColor(Color.LIGHT_GRAY);//设置边框颜色 g.setFont(new Font("Courier New", Font.BOLD, height-2));//边框字体样式 g.drawRect(0, 0,0, 0);//绘制边框 //绘制噪点 Random rand = new Random(); g.setColor(Color.LIGHT_GRAY); for (int i = 0; i < codeLength*6; i++) { int x = rand.nextInt(width); int y = rand.nextInt(height); g.drawRect(x, y, 1, 1);//绘制1*1大小的矩形 } //绘制验证码 int codeY = height-10; g.setColor(new Color(19,148,246)); g.setFont(new Font("Georgia", Font.BOLD, fontSize)); for(int i=0;i<codeLength;i++){ double deg=new Random().nextDouble()*20; g.rotate(Math.toRadians(deg), i*16+13,codeY-7.5); g.drawString(String.valueOf(securityCode.charAt(i)), i*16+5, codeY); g.rotate(Math.toRadians(-deg), i*16+13,codeY-7.5); } g.dispose();//关闭资源 return image; }}
0 0
- 验证码的变换
- 验证码的验证
- 验证码的验证
- 姿态解算基础知识(二)-旋转矢量坐标变换的四元数描述的验证
- thinkphp验证码的验证
- Android中图像变换Matrix的原理、代码验证和应用(一)
- Android中图像变换Matrix的原理、代码验证和应用(二)
- Android中图像变换Matrix的原理、代码验证和应用(三)
- Android中图像变换Matrix的原理、代码验证和应用
- Android中图像变换Matrix的原理、代码验证和应用
- Android中图像变换Matrix的原理、代码验证和应用(一)
- Android中图像变换Matrix的原理、代码验证和应用(一)
- Android中图像变换Matrix的原理、代码验证和应用(二)
- Android中图像变换Matrix的原理、代码验证和应用(三)
- Android中图像变换Matrix的原理、代码验证和应用(一)
- Android中图像变换Matrix的原理、代码验证和应用(二)
- Android中图像变换Matrix的原理、代码验证和应用(三)
- Android中图像变换Matrix的原理、代码验证和应用(二)
- OpenGL学习笔记(五)
- ROM、RAM、DRAM、SRAM和FLASH的区别
- Java中native关键字
- docker网络方案之weave原理篇
- Linux 下ffmpeg的安装
- 验证码的变换
- Maven常用命令
- scrapy抓取淘宝女郎
- week11- Dynamic Programming-NO.322. Coin Change
- 学习淘淘商城第五十七课(接收Queue消息)
- C++编程必备神器STL——常用算法
- 【重点】如何找到并修改MySQL57的配置文件my.ini
- VM ubuntu 打不开摄像头
- cuDNN安装