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实现验证码图片相关推荐

  1. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

  2. java 图片转jpg图片_JAVA转换jpg图片为渐进式图片

    很早之前看到一篇<web前端图片极限优化策略>,了解有jpg分为baseline-jpeg和preogressive-jpeg. 具体的区别如下: baseline-jpeg: 在文件较大 ...

  3. JAVA MYSQL从数据库中提取图片_java web将图片存到储数据库和从数据库中读取图片...

    (Notice:以下所有经验也是我根据网上的经验整理的,如有侵权可以联系我删除,Wx:IT_Ezra,QQ 654303408. 有问题讨论也可联系我,QQ同上.) 一.分析一下基本流程 从前台页面获 ...

  4. java 拖动验证码实现_java实现拖动图片验证码

    思路是,对原图产生两张图片,一张是底图,被抠掉一部分的图片,另外一张是移动图,被抠出的来部分 只写了后台怎么生成拖动验证码的两个图片,前端的还没写,待续.以下是后台的代码 class="ja ...

  5. java实现验证码输出_java实现验证码

    其实可以看看谷歌的开源框架kaptcha,就是一个产生验证码的框架 根据别人的代码稍稍修改了,实现在web页面展示 原帖地址:https://www.cnblogs.com/thirt... 生成验证 ...

  6. java 爬中 验证码识别_JAVA爬虫---验证码识别技术(一)

    Python中有专门的图像处理技术比如说PIL,可以对验证码一类的图片进行二值化处理,然后对图片进行分割,进行像素点比较得到图片中的数字.这种方案对验证码的处理相对较少,运用相对普遍,很多验证码图片可 ...

  7. java 下载url图片_java下载url图片链接

    1.从之前写的一篇中改写了代码,从远程的url链接中下载图片,并对各种浏览器的中文文件名进行展示 /** * 根据url路径下载图片 * @param filename 处理下载时显示设置好的中文名 ...

  8. java html 转图片_Java HTML转换为图片

    第一次尝试:用awt 包将HTML源码转换为图片 优点:不依赖任何外部JAR包,缺点:对CSS的支持比较差,复杂点的样式就无法展示,且不支持外部引入的CSS和写在style中的CSS,只能写在标签上 ...

  9. java生成带文字的图片_Java在背景图片上面加文字或者文字自动生成图片

    正巧遇到一个项目需要图片合成,查阅了网上许多资料之后整理了一份生成图片的工具类,代码如下:package org.yygzs.acker.util; import java.io.IOExceptio ...

最新文章

  1. 技校毕业是什么学历_技校毕业是什么学历
  2. CentOS安装网卡设置
  3. 不动产登记证书曝光 一个“改变”必须注意(图)
  4. MySQL数据库-笔记06【SQL的4种连接查询、事务】
  5. bootstrap文件不能被识别_树莓派安装openCV做图像识别
  6. 计算机操作员可以免考自考吗,计算机《职业资格证书》可以免考高
  7. python oop_python中oop
  8. typescript类与继承
  9. 【翻译】Robust Lane Detection and Tracking in Challenging Scenarios
  10. linux网络管理员认证考试,红帽认证系统管理员 (RHCSA) 考试
  11. 节假日查询API接口上线
  12. 如何在 vuePress中添加博客导流公众号-即输入验证码解锁全站文章
  13. labuladong的算法小抄_学会了回溯算法,我终于会做数独了
  14. 【658. 找到 K 个最接近的元素】
  15. 麦当劳一“发币”,币圈就闹笑话,加密数字货币到底是什么?
  16. XP系统封装-2011年
  17. 如何实现大屏数字滚动效果
  18. 地理分布团队的敏捷生命周期
  19. 卸载Norton 8企业版的一次经历
  20. ==和eques()

热门文章

  1. 【ARM-Linux开发】U-Boot启动过程--详细版的完全分析
  2. SVN需要忽略的文件类型
  3. 选择、插入、冒泡排序
  4. log4j的配置方法
  5. 设计模式——Bridge 桥模式
  6. 牛客21312 神秘餐馆
  7. k-Means——经典聚类算法实验(Matlab实现)
  8. html中如何让字段闪烁,Javascript结合CSS实现边框闪烁提示
  9. Linux下载cfg命令,Linux安装详解-配置ks.cfg实现自动安装过程
  10. sae 微信 java web_[1] 微信公众号与sae的web应用之间的配置