Java验证码图片生成源代码

2023-11-08

Java验证码图片生成源代码

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Random;

public class Captchautil {

    public static String random() {
        // 使用字符串来接收随机字符
        StringBuffer stringBuffer = new StringBuffer ();
        // 所有的小写字符
        String arrWord = "abcdefghigklmnopqrstuvwxyz";
        // 使用String.toUpperCase 转换成大写字符
        String allCase = arrWord.toUpperCase () + arrWord + "1234567890";
        // 挑选所有的随机字符串转化为字符数组
        byte[] bytes = allCase.getBytes ();
        // 创建随机抽取
        Random random = new Random ();
        // 获取4个随机字符并存方法到list集合中
        for (int i = 0; i < 4; i++) {
            int index = random.nextInt (bytes.length + 1);
            // 将对应的ASCII码值转换字符存储
            stringBuffer.append ((char)bytes[index]);

        }
        return stringBuffer.toString ();
    }

    public static void outputImage(String code, OutputStream ops) {
        // 创建Random用来画干扰线
        Random random = new Random ();
        // 创建图片对象
        BufferedImage image = new BufferedImage (100, 40, BufferedImage.TYPE_3BYTE_BGR);
        // 设置画布
        Graphics graphics = image.getGraphics ();
        // 设置白色背景
        graphics.setColor (Color.white);
        graphics.fillRect (0, 0, 100, 40);
        byte[] bytes = code.getBytes ();
        // 写字获取随机颜色
            graphics.setColor (new Color (random.nextInt (255) + 1,
                    random.nextInt (255) + 1,
                    random.nextInt (255) + 1));
            graphics.setFont (new Font ("微软雅黑", Font.PLAIN, 20));
            // 设置验证码位置
            graphics.drawBytes (bytes, 0, 4, 20, 20);
        // 随机线条
        for (int i = 0; i < 10; i++) {
            graphics.setColor (new Color (random.nextInt (255) + 1,
                    random.nextInt (255) + 1,
                    random.nextInt (255) + 1));
            graphics.drawLine (random.nextInt (100),
                    random.nextInt (40),
                    random.nextInt (100),
                    random.nextInt (40));
        }

        try {
            boolean write = ImageIO.write (image, "png", ops);
            System.out.println (write);
        } catch (IOException e) {
            e.printStackTrace ();
        }


    }

    public static void main(String[] args){
        String code = random ();
        System.out.println (code);
        try {
            // 填写图片的饿导出位置
            OutputStream sot = new FileOutputStream ("I:\\file\\a.png", false);
            outputImage (code, sot);
        } catch (FileNotFoundException e) {
            e.printStackTrace ();
        }


    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java验证码图片生成源代码 的相关文章

随机推荐

  • python------线程池的应用

    在python中经常会使用异步 线程池 进程池 解决io操作 在爬虫中并不建议使用进程池 消耗过大 目标 会使用线程池 1 导入 import time def demo1 for i in range 3 print f 我饿了 i ti
  • MVCC与BufferPool缓存机制

    今天学习了MVCC与BufferPool缓存机制 这里记录一下学习笔记 有错误 还望指出 文章目录 MVCC多版本并发控制机制 undo日志版本链与read view机制 Innodb引擎SQL执行的BufferPool缓存 MVCC多版本
  • 《前端》jQuery-ajax例子

    我的jQuery ajax的笔记 https blog csdn net bellediao article details 104239715 从其他博主那里截取的例子 并附有疑问解答 例1 将接口中的result字段绘制成表格
  • Windows官方Linux子系统C/C++开发环境搭建

    关于利用 Windows 10 适用于 Linux 的 Windows 子系统 WSL 安装 Linux 在 Windows 平台直接运行而不依赖虚拟机并通过 Visual Studio Code 在 Windows 平台直接开发并调试Li
  • 搜索+防抖

    搜索 防抖 1 以每时每刻这个项目为例 很多页面都有搜索功能 而且跳转的时同一个搜索页面 在完成搜索功能后 在返回原页面 需要一个唯一标识来记载 搜索 goSearch this router push path search query
  • 详解Python进程与线程

    一 进程 1 1 进程概念 进程是资源分配的最小单位 程序隔离的边界 CPU的时间片轮转 在不同的时间段切换执行不同的进程 但是切换进程是比较耗时的 就引来了轻量级进程 也就是所谓的线程 一个进程中包括多个线程 代码流 其实也就是进程中同时
  • 如何进行安全性测试?

    1 功能验证 功能验证是采用软件测试当中的黑盒测试方法 对涉及安全的软件功能 如 用户管理模块 权限管理模块 加密系统 认证系统等进行测试 主要验证上述功能是否有效 具体方法可使用黑盒测试方法 2 漏洞扫描 安全漏洞扫描通常都是借助于特定的
  • [Git]记录Git Rebase和PR经验

    1 Git Pull Request 大概说一下 PR这个操作是你作为一个collaborator切出来了一个分支 在上面做了某些操作 可能是协作开发 可能是优化等 在此之后希望owner把你的代码pull到某个分支 比如master 上的
  • SIFT解析(一)建立高斯金字塔

    SIFT Scale Invariant Feature Transform 尺度不变特征转换 在目标识别 图像配准领域具有广泛的应用 下面按照SIFT特征的算法流程对其进行简要介绍对SIFT特征做简要介绍 高斯金字塔是SIFT特征提取的第
  • Write-back,Write-through及write allocate

    此文为转载 如需原始作者要求删除请私信我 计算机的存储系统采用Register Cache Memory和I O的方式来构成存储系统 无疑是一个性能和经济性的妥协的产物 Cache和Memory机制是计算机硬件的基础内容 这里就不再啰嗦 下
  • 【Java笔记+踩坑】SpringBoot基础4——原理篇

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud SpringCloudAlibaba 黑马旅游 谷粒商城 目录 1 自动配置工作流程 1 1 bean的加载方式
  • collection集合 地址_Java集合简介

    1 概述 Java 集合框架提供了一套性能优良 使用方便的接口和类 位于java util包中 使用集合框架的时直接从java util中导包 Java 集合框架主要包括两种类型的容器 一种是Collection 存储一个元素集合 另一种是
  • PHP环境gettext使用指引

    gettext简介 gettext是一种国际化与本地化系统 在类Unix系统中编写多语言程序时经常被使用 gettext的一个常用的实现版本为GNU gettext 1995年发布 源代码中所有需要多语言支持的 需要翻译的 字符串都修改为使
  • strcpy和memcpy的区别

    strcpy和memcpy都是标准C库函数 它们有下面的特点 strcpy提供了字符串的复制 即strcpy只用于字符串复制 并且它不仅复制字符串内容之外 还会复制字符串的结束符 已知strcpy函数的原型是 char strcpy cha
  • redis数据库学习->html学习->css学习

    作者 芝士小熊饼干 系列专栏 Python 坚持天数 13天 h1 Hello HTML h1
  • python是一种蟒蛇使用的语言_飞凌干货丨初探Python-这条蟒蛇有多长

    原标题 飞凌干货丨初探Python 这条蟒蛇有多长 Python语言是一种被广泛使用的解释型语言 类似于shell语言 相对应的就是C C 这一类的编译型语言 Python语言有着解释型语言普遍的优缺点 优点就是灵活 可移植性高 具有非常优
  • Dynamics 365新特性介绍:在视图中显示图片和提示

    关注本人微信和易信公众号 微软动态CRM专家罗勇 回复242或者20161230可方便获取本文 同时可以在第一间得到我发布的最新的博文信息 follow me 我的网站是 www luoyong me Dynamics CRM 2011及以
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】矩阵最大值

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 矩阵最大值 知识点矩阵数组 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 给定一个仅包含0和1的N N二维矩阵 请计算二维矩阵的最大值 计算规则如下 1 每行元素按下标
  • pycharm安装教程

    pycharm是一款功能强大的python编辑器 具有跨平台性 鉴于目前最新版pycharm使用教程较少 为了节约大家摸索此IDE的时间 来介绍一下pycharm在windows下是如何安装的 这是PyCharm的下载地址 http www
  • Java验证码图片生成源代码

    Java验证码图片生成源代码 import javax imageio ImageIO import java awt import java awt image BufferedImage import java io import ja