验证码 Demo

 1         //设置响应头
 2         response.setCharacterEncoding("image/jpeg");
 3         int width=160;
 4         int height=40;
 5         BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
 6         Graphics g=image.getGraphics();
 7         Graphics2D g2d = (Graphics2D) g;
 8         g2d.setColor(Color.WHITE);
 9         g2d.fillRect(0, 0, width, height);
10         g2d.setFont(new Font("宋体", Font.BOLD, 18));
11          Random random=new Random();
12         for(int i=0;i<4;i++)//获取随机四个汉字
13         {
14             Color c=new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
15             String s=GetStr();
16
17             AffineTransform aff = new AffineTransform();
18             aff.rotate(Math.random(),i*10,height-20);//旋转
19             aff.scale(0.2+Math.random(), 0.2+Math.random());//缩放
20             g2d.setTransform(aff);
21             System.err.println(">:"+s);
22
23             g2d.setColor(c);
24             g2d.drawString(s, i*10, height- 5);
25         }
26
27         for(int i=0;i<3;i++)    //干扰线
28         {
29             Color c=new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
30             g2d.setColor(c);
31             g2d.drawLine(random.nextInt(width), random.nextInt(height), random.nextInt(width), random.nextInt(height));
32
33         }
34         g2d.dispose();//图片生效
35         ImageIO.write(image, "jpeg", response.getOutputStream());//输出
36         System.out.println("输出");
37     }
38
39     //获取汉字
40     private static String GetStr()
41     {
42         String str = null;
43         try {
44
45             int hightPos, lowPos; // 定义高低位
46             Random random = new Random();
47             hightPos = (176 + Math.abs(random.nextInt(39)));//获取高位值
48             lowPos = (161 + Math.abs(random.nextInt(93)));//获取低位值
49             byte[] b = new byte[2];
50             b[0] = (new Integer(hightPos).byteValue());
51             b[1] = (new Integer(lowPos).byteValue());
52             str = new String(b, "GBK");//转成中文
53
54         } catch (Exception e) {
55             e.printStackTrace();
56         }
57         return str;
58
59     }

PS:写验证码不能把所有的都用上,这样就无法识别了,可以选择其中的几种进行,如写汉字只加干扰线,写字母加旋转等。

时间: 2024-10-27 12:34:21

验证码 Demo的相关文章

PHP生成图片验证码demo【OOP面向对象版本】

下面是我今天下午用PHP写的一个生成图片验证码demo,仅供参考. 这个demo总共分为4个文件,具体代码如下: 1.code.html中的代码: 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <title>登录.注册验证码生成</title> 6 </head> 7 <bo

中国电信天翼开放平台自定义短信验证码和模板短信demo

自定义短信验证码 package com.ffcs.sms; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.TreeMap; import com.ffcs.util.HttpInvoker; import com.ffcs.util.RandomUtil; import com.google.

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

简单的前端验证码

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" > 3 <head> 4 <title>验证码Demo</

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

转--2014年最新810多套android源码2.46GB免费一次性打包下载

转载自:http://www.eoeandroid.com/thread-497046-1-1.html 感谢该博客主人无私奉献~~ 下面的源码是从今年3月份开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被博主分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是博主一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不

android 自己定义控件属性(TypedArray以及attrs解释)

近期在捣鼓android 自己定义控件属性,学到了TypedArray以及attrs.在这当中看了一篇大神博客Android 深入理解Android中的自己定义属性.我就更加深入学习力一番.我就沿着这个学习,讲一下流程吧,兴许一篇还有应用. 1.attrs文件编写 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="titleText" for

tornado—web框架基础入门

一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关有用工具及优化. Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快.得利于其非阻塞的方式和对 epoll 的 运用,Tornado 每秒可以处理数

RuPengWang项目

项目 Day1------------------------- 说明:建外键约束.ashx+Razor RupengWang创建三个类库Model DAL BLL后台:RupengWang.Admin 前台:RupengWang.Front 建一个后台管理员的表T_AdminUsers(Id UserName Password)打开动软,生成三层代码 (报错,是因为UAC是不用随意的写入数据,方法是以管理员运行,没有就去属性兼容性中找),(工具-选项-配置-命令规则),(新建net项目-工厂模