本代码可直接运行,生成的验证码是p_w_picpath.jpg,被保存在D盘的根目录下面。

package com.server;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.p_w_picpath.BufferedImage;
import java.io.File;
import java.util.Random;

import javax.p_w_picpathio.ImageIO;
import javax.p_w_picpathio.stream.ImageOutputStream;

public class Image {
  
   public String sRand="";
 
   public Color getRandColor(int fc,int bc){//给定范围获得随机颜色
    Random random = new Random();
    if(fc>255) fc=255;
    if(bc>255) bc=255;
    int r=fc+random.nextInt(bc-fc);
    int g=fc+random.nextInt(bc-fc);
    int b=fc+random.nextInt(bc-fc);
    return new Color(r,g,b);
    }
   public BufferedImage creatImage(){

// 在内存中创建图象
     int width=60, height=20;
     BufferedImage p_w_picpath = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
     Graphics g = p_w_picpath.getGraphics();

//生成随机类
     Random random = new Random();

// 设定背景色
     g.setColor(getRandColor(200,250));
     g.fillRect(0, 0, width, height);

//设定字体
     g.setFont(new Font("Times New Roman",Font.PLAIN,18));
   //画边框
     //g.setColor(new Color());
     //g.drawRect(0,0,width-1,height-1);
     // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
     g.setColor(getRandColor(160,200));
     for (int i=0;i<155;i++)
     {
   int x = random.nextInt(width);
   int y = random.nextInt(height);
   int xl = random.nextInt(12);
   int yl = random.nextInt(12);
   g.drawLine(x,y,x+xl,y+yl);
     }

// 取随机产生的认证码(4位数字)
     //String rand = request.getParameter("rand");
     //rand = rand.substring(0,rand.indexOf("."));
    
     for (int i=0;i<4;i++){
    String rand=String.valueOf(random.nextInt(10));
    sRand+=rand;
  // 将认证码显示到图象中
    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
    g.drawString(rand,13*i+6,16);
     }
     // 图象生效
     g.dispose();
   
     return p_w_picpath;
   }
   public static void main(String[] args) {
  File file=new File("D://p_w_picpath.jpg");
  try{
   BufferedImage p_w_picpath=new Image().creatImage();
   ImageOutputStream p_w_picpathIo=ImageIO.createImageOutputStream(file);
   ImageIO.write(p_w_picpath, "jpg", p_w_picpathIo);
  }catch (Exception e) {
   e.printStackTrace();// TODO: handle exception
  }
 }
 }

转载于:https://blog.51cto.com/7883830/1705152

纯java生成验证码 java生成图片并保存相关推荐

  1. java生成验证码的三种方法

    java生成验证码的三种方法 第一种:导入jar包com.github.axet生成法 ①导包 <dependency><groupId>com.github.axet< ...

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

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

  3. java生成验证码并进行验证

    一实现思路 使用BufferedImage用于在内存中存储生成的验证码图片 使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证 最后通过ImageI ...

  4. 【可食用】KeyTool生成KeyStore,证书、公钥、私钥文档JAVA生成,JAVA实现ECC签名验签

    KeyTool生成KeyStore,证书.公钥.私钥文档JAVA生成,JAVA实现ECC签名验签 一.首先我们可以写个工具类生成密钥对.证书.公钥.私钥文本 jksAndCerGenerator.ja ...

  5. java生成验证码登录,生成验证码

    这里写了一个生成验证码的demo 前台可以访问该servlet页面显示验证码 验证码 后台存的session名称为vCode 判断验证码是否正确时可以直接调用 前台通过 这里你就自己引入jq吧 < ...

  6. 关于java生成验证码

    一.读取外部txt文件生成二维码 jsp: <%@ page language="java" contentType="text/html; charset=UTF ...

  7. java控制器里面生成验证码,java + springmvc 酷炫验证码分享

    java + springmvc 酷炫验证码分享 一.maven 依赖 com.github.bingoohuang patchca 0.0.1 二.spring mvc 控制器 import jav ...

  8. java生成验证码图片中仅有线条_Java实现验证码具体代码(图片、汉字)

    本文为大家分享两个实例,相信大家一定会喜欢. 实例1:随机生成验证码图片并将之输出为一个png文件 效果图: import java.awt.Color; import java.awt.Font; ...

  9. java生成验证码工具类_Java生成图形验证码工具类

    生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...

最新文章

  1. 深入了解android平台的jni---注册native函数
  2. 全球及中国甲基全氟异丁醚行业竞争现状与投资战略前景研究报告2022版
  3. 单单表单独占一行_数据透视表→Alt+D+P?
  4. SpringMVC:学习笔记(5)——数据绑定及表单标签
  5. JAVA程序设计计时器代码_Java中的定时器Timer使用示例代码详解
  6. 吉吉王国(二分+树形dp)
  7. vim如何开启256色
  8. 在CentOS上安装Docker
  9. cenos 安装 Docker
  10. DevComponents.DotNetBar2 美化包使用以及验证教程
  11. Mac与Linux SSH无密登陆(互信)
  12. 清华大学出版社2013年第二期书评征集图书列表
  13. 针对MacBook提示目前翻译不可用请稍后再试的解决方法
  14. matlab 雅各比符号,密码学与编码理论(第2版)(密码学方面的经典著作)
  15. 1001 害死人不偿命的(3n+1)猜想
  16. [Vue warn]: Unknown custom element: <mycom> - did you register the component correctly? For recursiv
  17. 6. unity之脚本
  18. 【联邦学习+区块链】FLchain: Federated Learning via MEC-enabled Blockchain Network
  19. 如何生成餐桌专属二维码
  20. Linux MTD设备文件系统

热门文章

  1. python独立环境——virtualenv
  2. ssh 免密码登录---问题
  3. JavaScript继承详解(三)
  4. LINQ to SQL 用O/R设计器手工建表对象
  5. 在linux中常用的shell备份脚本(波大帅哥)
  6. jquery mobile常用的data-role类型
  7. Android 自定义UI--电池
  8. Android 游戏引擎汇总
  9. SQL前三章知识点测试
  10. 【刘文彬】 Controller:EOS区块链核心控制器