java实现验证码图片_java实现验证码图片
1 packagesip.utils;2 importjava.awt.Color;3 importjava.awt.Graphics2D;4 importjava.awt.geom.AffineTransform;5 importjava.util.Random;6
7 /**
8 * 验证码图片生成器9 *10 *@authorWuZhengFei11 *12 */
13 public classIdentityCode {14 /**
15 * 验证码图片的宽度。16 */
17 private int width = 80;18 /**
19 * 验证码图片的高度。20 */
21 private int height = 23;22 /**
23 * 验证码的数量。24 */
25 private Random random = newRandom();26
27 publicIdentityCode(){}28 /**
29 * 生成随机颜色30 *@paramfc 前景色31 *@parambc 背景色32 *@returnColor对象,此Color对象是RGB形式的。33 */
34 public Color getRandomColor(int fc, intbc) {35 if (fc > 255)36 fc = 200;37 if (bc > 255)38 bc = 255;39 int r = fc + random.nextInt(bc -fc);40 int g = fc + random.nextInt(bc -fc);41 int b = fc + random.nextInt(bc -fc);42 return newColor(r, g, b);43 }44
45 /**
46 * 绘制干扰线47 *@paramg Graphics2D对象,用来绘制图像48 *@paramnums 干扰线的条数49 */
50 public void drawRandomLines(Graphics2D g ,intnums ){51 g.setColor(this.getRandomColor(160, 200)) ;52 for(int i=0 ; i
61 /**
62 * 获取随机字符串,63 * 此函数可以产生由大小写字母,汉字,数字组成的字符串64 *@paramlength 随机字符串的长度65 *@return随机字符串66 */
67 public String drawRandomString(intlength , Graphics2D g){68 StringBuffer strbuf = newStringBuffer() ;69 String temp = "";70 //int itmp = 0 ;
71 for(int i=0 ; i
117 Color color = new Color(20+random.nextInt(20) , 20+random.nextInt(20) ,20+random.nextInt(20) );118 g.setColor(color) ;119 //想文字旋转一定的角度
120 AffineTransform trans = newAffineTransform();121 trans.rotate(random.nextInt(45)*3.14/180, 15*i+8, 7) ;122 //缩放文字
123 float scaleSize = random.nextFloat() + 0.8f;124 if(scaleSize>1f)125 scaleSize =1f ;126 trans.scale(scaleSize, scaleSize) ;127 g.setTransform(trans) ;128 g.drawString(temp, 15*i+18, 14) ;129
130 strbuf.append(temp) ;131 }132 g.dispose() ;133 returnstrbuf.toString() ;134 }135 public intgetWidth() {136 returnwidth;137 }138 public void setWidth(intwidth) {139 this.width =width;140 }141 public intgetHeight() {142 returnheight;143 }144 public void setHeight(intheight) {145 this.height =height;146 }147 public static voidmain(String[] arg){148 //生成验证码149 //设置不缓存图片
150 response.setHeader("Pragma", "No-cache");151 response.setHeader("Cache-Control", "No-cache");152 response.setDateHeader("Expires", 0) ;153 //指定生成的相应图片
154 response.setContentType("image/jpeg") ;155 IdentityCode idCode = newIdentityCode();156 BufferedImage image =newBufferedImage(idCode.getWidth() , idCode.getHeight() , BufferedImage.TYPE_INT_BGR) ;157 Graphics2D g =image.createGraphics() ;158 //定义字体样式
159 Font myFont = new Font("黑体" , Font.BOLD , 16) ;160 //设置字体
161 g.setFont(myFont) ;162
163 g.setColor(idCode.getRandomColor(200 , 250)) ;164 //绘制背景
165 g.fillRect(0, 0, idCode.getWidth() , idCode.getHeight()) ;166
167 g.setColor(idCode.getRandomColor(180, 200)) ;168 idCode.drawRandomLines(g, 160) ;169 String randomString = idCode.drawRandomString(4, g) ;170 g.dispose() ;171 ImageIO.write(image, "JPEG", response.getOutputStream()) ;172 }173 }
java实现验证码图片_java实现验证码图片相关推荐
- java生成验证码实例_Java生成验证码功能实例代码
页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...
- java 图片转jpg图片_JAVA转换jpg图片为渐进式图片
很早之前看到一篇<web前端图片极限优化策略>,了解有jpg分为baseline-jpeg和preogressive-jpeg. 具体的区别如下: baseline-jpeg: 在文件较大 ...
- JAVA MYSQL从数据库中提取图片_java web将图片存到储数据库和从数据库中读取图片...
(Notice:以下所有经验也是我根据网上的经验整理的,如有侵权可以联系我删除,Wx:IT_Ezra,QQ 654303408. 有问题讨论也可联系我,QQ同上.) 一.分析一下基本流程 从前台页面获 ...
- java 拖动验证码实现_java实现拖动图片验证码
思路是,对原图产生两张图片,一张是底图,被抠掉一部分的图片,另外一张是移动图,被抠出的来部分 只写了后台怎么生成拖动验证码的两个图片,前端的还没写,待续.以下是后台的代码 class="ja ...
- java实现验证码输出_java实现验证码
其实可以看看谷歌的开源框架kaptcha,就是一个产生验证码的框架 根据别人的代码稍稍修改了,实现在web页面展示 原帖地址:https://www.cnblogs.com/thirt... 生成验证 ...
- java 爬中 验证码识别_JAVA爬虫---验证码识别技术(一)
Python中有专门的图像处理技术比如说PIL,可以对验证码一类的图片进行二值化处理,然后对图片进行分割,进行像素点比较得到图片中的数字.这种方案对验证码的处理相对较少,运用相对普遍,很多验证码图片可 ...
- java 下载url图片_java下载url图片链接
1.从之前写的一篇中改写了代码,从远程的url链接中下载图片,并对各种浏览器的中文文件名进行展示 /** * 根据url路径下载图片 * @param filename 处理下载时显示设置好的中文名 ...
- java html 转图片_Java HTML转换为图片
第一次尝试:用awt 包将HTML源码转换为图片 优点:不依赖任何外部JAR包,缺点:对CSS的支持比较差,复杂点的样式就无法展示,且不支持外部引入的CSS和写在style中的CSS,只能写在标签上 ...
- java生成带文字的图片_Java在背景图片上面加文字或者文字自动生成图片
正巧遇到一个项目需要图片合成,查阅了网上许多资料之后整理了一份生成图片的工具类,代码如下:package org.yygzs.acker.util; import java.io.IOExceptio ...
最新文章
- 技校毕业是什么学历_技校毕业是什么学历
- CentOS安装网卡设置
- 不动产登记证书曝光 一个“改变”必须注意(图)
- MySQL数据库-笔记06【SQL的4种连接查询、事务】
- bootstrap文件不能被识别_树莓派安装openCV做图像识别
- 计算机操作员可以免考自考吗,计算机《职业资格证书》可以免考高
- python oop_python中oop
- typescript类与继承
- 【翻译】Robust Lane Detection and Tracking in Challenging Scenarios
- linux网络管理员认证考试,红帽认证系统管理员 (RHCSA) 考试
- 节假日查询API接口上线
- 如何在 vuePress中添加博客导流公众号-即输入验证码解锁全站文章
- labuladong的算法小抄_学会了回溯算法,我终于会做数独了
- 【658. 找到 K 个最接近的元素】
- 麦当劳一“发币”,币圈就闹笑话,加密数字货币到底是什么?
- XP系统封装-2011年
- 如何实现大屏数字滚动效果
- 地理分布团队的敏捷生命周期
- 卸载Norton 8企业版的一次经历
- ==和eques()