作为刚工作不久的小码农,昨天弄了个POI导出excel,今天总监让弄个图形验证码,在网上吧啦吧啦,自己随手写了一个,拿上来供大家参考

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
/*** 动态生成图片*/
public class TestCode {// {"宋体", "华文楷体", "黑体", "华文新魏", "华文隶书", "微软雅黑", "楷体_GB2312"}private static String[] fontNames = { "宋体", "华文楷体", "黑体", "微软雅黑",  "楷体_GB2312" };// 可选字符abcdefghjkmnopqrstuvwxyz123456789ABCDEFGHJKMNPQRSTUVWXYZprivate static String codes = "abcdefghjkmnopqrstuvwxyz123456789ABCDEFGHJKMNPQRSTUVWXYZ";// 背景色private Color bgColor = new Color(255, 255, 255);// 基数(一个文字所占的空间大小)private int base = 30;// 图像宽度private int width = base * 4;// 图像高度private int height = base;// 文字个数(可调)private int len = 4;// 设置字体大小private int fontSize = 22;// 验证码上的文本private String text;private BufferedImage img = null;private Graphics2D g2 = null;/*** 生成验证码图片*/public void drawImage(OutputStream outputStream) {// 1.创建图片缓冲区对象, 并设置宽高和图像类型img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 2.得到绘制环境g2 = (Graphics2D) img.getGraphics();// 3.开始画图// 设置背景色g2.setColor(bgColor);g2.fillRect(0, 0, width, height);StringBuffer sb = new StringBuffer();// 用来装载验证码上的文本for (int i = 0; i < len; i++) {// 设置画笔颜色 -- 随机// g2.setColor(new Color(255, 0, 0));g2.setColor(new Color(getRandom(0, 150), getRandom(0, 150),getRandom(0, 150)));// 设置字体g2.setFont(new Font(fontNames[getRandom(0, fontNames.length)], Font.BOLD, fontSize));// 旋转文字(-45~+45)int theta = getRandom(-45, 45);g2.rotate(theta * Math.PI / 180, 7 + i * base, height - 8);// 写字String code = codes.charAt(getRandom(0, codes.length())) + "";g2.drawString(code, 7 + i * base, height - 8);sb.append(code);g2.rotate(-theta * Math.PI / 180, 7 + i * base, height - 8);}this.text = sb.toString();// 画干扰线for (int i = 0; i < len + 2; i++) {// 设置画笔颜色 -- 随机// g2.setColor(new Color(255, 0, 0));g2.setColor(new Color(getRandom(0, 150), getRandom(0, 150),getRandom(0, 150)));g2.drawLine(getRandom(0, 120), getRandom(0, 30), getRandom(0, 120),getRandom(0, 30));}// 4.保存图片到指定的输出流try {ImageIO.write(this.img, "JPEG", outputStream);} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}finally{// 5.释放资源g2.dispose();}}/*** 获取验证码字符串* @return*/public String getCode() {return this.text;}/** 生成随机数的方法*/private static int getRandom(int start, int end) {Random random = new Random();return random.nextInt(end - start) + start;}public static void main(String[] args) throws Exception {TestCode tc = new TestCode();tc.drawImage(new FileOutputStream("d:/图片验证码.jpg"));System.out.println("图片验证码为---->"+tc.getCode());System.out.println("执行成功~!");}

有什么不足的地方,希望大神们多多指教

用java写图形验证码,超级简单相关推荐

  1. Java生成图形验证码,并传输至前端

    前段时间想要做一个登录的验证码功能,在网上查找了许多资料后实现了,在此记录并巩固一下,其实原理很简单,就是让Java来充当"画笔的角色"来绘制图片,并将图片通过二进制流的方式传输至 ...

  2. java实现图形验证码

    项目中可能会用到图形验证码的功能,源码分享给大家.以下是实际效果图: 一.后端JAVA代码 1.生成图形验证码工具类 public class imgVerifyCode {private int w ...

  3. 使用Java生成图形验证码(后端)

    生成图形验证码工具类: VerificationCodeUtil package com.merce.woven.utils;import java.awt.*; import java.awt.im ...

  4. 用Java写的验证码程序

    用java实现的给浏览器响应验证码程序.并且是实现了可以点击验证码图片换一张验证码. 最后边给出了完整的代码. //首先定义一个自己的类并且去继承HttpServlet这个类 public class ...

  5. java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码

    原创 野狗菌 希望你能喜欢 今天 关于本文: 本文介绍一个简单Java爬虫,获取网页源码,爬取电话号码. 本篇教程用我的博客一个测试网页演示. --野狗菌[希望你能喜欢] 测试页面: https:// ...

  6. jsp 图形验证码 imageutils_java_jsp:java:生成图形验证码(纯数字)

    以下是jsp页面代码: Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = new Random(); if(fc>25 ...

  7. java 写文件 二进制_简单Java程序向实用程序的过度:二进制文件的读写

    File I/O中常见的文件读写: 1.字节流读写文本文件 FileInputStream; FileOutputStream; 2.字符流读写文本文件 FileReader; FileWriter; ...

  8. java 生成图形验证码

    public void getCode(HttpServletRequest request, HttpServletResponse response) throws IOException {// ...

  9. java生成图形验证码

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 首先,需要生成验证码字符串,方式很多,下面提供一种,根据指定源的方式来生成验证码 /*** 使用系统默认字符源 ...

  10. 图形验证码+短信验证码【Java应用实例】

    一.图形验证码的实现 1.1 简介 常在网上晃悠的人,对下面这张图都不会陌生.特别是在注册新账号.确认交易时,它们都会频繁出现,要求我们输入正确的验证码,那这些看上去跟我们要做的事情完全无关的验证码到 ...

最新文章

  1. html web上传文件原理,Web上传文件的原理及实现
  2. iOS设计模式(02):单例模式
  3. WireShark之抓包过滤链接部分
  4. ZigBee网络数据传递流程_Zigbee网络架构解析
  5. 中国AI公司公开击败谷歌微软,这次是Yi+AI视觉团队
  6. 华为全系Visio图标下载链接
  7. matlab中在xls单元格中填充颜色,!Excel中如何根据某一列的值对整行进行颜色填充?...
  8. 微信的Linux版本,ubuntu16.04安装微信,linux原生版
  9. 5.MySQL高级语句,你给我学!
  10. k8s 1.23.1部署gitlab、 gitlab-runn配置k8s集群编写.gitlab-ci.yml实现根据tag,分支发布CICD流程
  11. Elastic 7.12 版重磅发布:读时模式、冻结层技术预览版和自动扩展功能正式发布
  12. allegro如何删除没有网络的走线,查还没有连的网络线
  13. 微信PC版重磅更新!2个困扰多年的大麻烦,这次终于解决了
  14. 什么是disjoint-support?
  15. html旅游网站作品简介,旅游网站html模板
  16. 操作记录-2020-11-08:精简代码处理RNA_seq数据
  17. 转:获取脚本运行路径的VBS脚本
  18. Unity手游实战:从0开始SLG——逻辑与表现分离以及实战ECS架构和优化
  19. 云计算、大数据、人工智能本质的区别和关系
  20. 宝塔面板能打开, 但wordpress 网站不能打开,提示建立数据库连接时出错--解决办法

热门文章

  1. 游戏算法整理(贴图完整版)
  2. qt在linux中安装目录,详解QT安装全过程
  3. 2021年河南省中等职业教育技能大赛 网络搭建与应用项目
  4. 步进电机驱动器怎么设置细分
  5. OMRON继电器基础讲解
  6. 05【应用工具简介】PM 流程图,思维导图,原型图绘制?怎么绘制不被解雇?
  7. Linux的LCD驱动
  8. itextpdf使用
  9. java对象转换为map
  10. python3 txt 读写_Python3 读写txt文件