java 在线图片验证码生成代码_JAVA技术:代码实现验证码图片的生成

1packagecom.logcd.servlet;23importjava.awt.Color;4importjava.awt.Font;5importjava.awt.Graphics2D;6importjava.awt.image.BufferedImage;7importjava.util.Random;8importjavax.imageio.ImageIO;9importjavax.servlet.*;10importjava.io.*;11importjavax.servlet.http.*;12importjavax.servlet.ServletException;13importjavax.servlet.http.HttpServlet;14importjavax.servlet.http.HttpServletRequest;15importjavax.servlet.http.HttpServletResponse;1617@SuppressWarnings("serial")18publicclassRandomCodeextendsHttpServlet {1920publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)21throwsServletException, IOException {2223this.doPost(request, response);24}2526publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)27throwsServletException, IOException {2829//验证码图片的宽度。30intwidth=70;31//验证码图片的高度。32intheight=30;33BufferedImage buffImg=newBufferedImage(width, height,34BufferedImage.TYPE_INT_RGB);35Graphics2D g=buffImg.createGraphics();3637//创建一个随机数生成器类。 38         Random random = new Random(); 39  40//设定图像背景色(因为是做背景,所以偏淡)41g.setColor(getRandColor(200,250));42g.fillRect(0,0, width, height);43//创建字体,字体的大小应该根据图片的高度来定。44Font font=newFont("Times New Roman", Font.HANGING_BASELINE,28);45//设置字体。46g.setFont(font);4748//画边框。 49         g.setColor(Color.BLACK); 50         g.drawRect(0, 0, width - 1, height - 1);51//随机产生155条干扰线,使图象中的认证码不易被其它程序探测到。52//g.setColor(Color.GRAY);53g.setColor(getRandColor(160,200));54for(inti=0; i<155; i++) {55intx=random.nextInt(width);56inty=random.nextInt(height);57intxl=random.nextInt(12);58intyl=random.nextInt(12);59g.drawLine(x, y, x+xl, y+yl);60}6162//randomCode用于保存随机产生的验证码,以便用户登录后进行验证。63StringBuffer randomCode=newStringBuffer();6465//设置默认生成4个验证码66intlength=4;67//设置备选验证码:包括"a-z"和数字"0-9" 68         String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";6970intsize=base.length();7172//随机产生4位数字的验证码。73for(inti=0; i255)115fc=255;116if(bc>255)117bc=255;118intr=fc+random.nextInt(bc-fc);119intg=fc+random.nextInt(bc-fc);120intb=fc+random.nextInt(bc-fc);121returnnewColor(r, g, b);122}123124}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值