问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何struts2下实现了图片验证码实例

发布网友 发布时间:2022-05-01 22:48

我来回答

1个回答

热心网友 时间:2022-04-18 08:51

/**
* \file
* 该类是用于实现一个注册码
*
*
* copyright (C) 2000, 2011, Bluedon, co.,ltd
*
* @author zyj
* @version 1.0
*
* Modify log:
* - 2011-8-31 zyj
*
*/
package common.toolbag;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;

/**
* 该类是用于实现一个注册码
*
* @author zyj
*
*/
public class ValidtorCode {

private 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);
}

/**
* 该方法用于获得注册码
*
* @param out
* 用于输出注册码的流
* @param width
* 注册码的长度
* @param height
* 注册码的高度
* @return 返回字符串的注册码号码
* @throws IOException
* 产生注册码过程可能报IO流异常
*/
public String getImage(OutputStream out, int width, int height)
throws IOException {
String[] charCode = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
"B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N",
"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.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 sRand = "";
for (int i = 0; i < 4; i++) {
String rand = charCode[random.nextInt(charCode.length - 1)];
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();

// 输出图象到页面
ImageIO.write(image, "JPEG", out);
return sRand;

}

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"你是在哪看到我的照片?"怎么说英语 留恋地看着我的照片用英语怎么说? 高德iphone地图下载 苹果手机高德地图怎么下载地图 孕中期适合出游吗 哪些孕妇不适合长途旅行 孕妇坐长途车旅行的好处 孕妇出游的最佳时间 孕晚期适合出游吗 孕妇外出旅行禁忌 小米11烧wifi啥表现 基金净值是负数是怎么回事啊? 四川成炼科技有限公司怎么样? 今天看到一条sql语句,帮我看看里边的p和u是干什么的吧 java如何设计登陆界面图形验证码? 我现在在达州,请问下男孩子在化妆学校学化妆好不好 如何使图片验证码中的字符随机倾斜(用java实现) 达州有美容师培训学校吗? 有没有在达州春君化妆学校学过化妆的?哪里怎么样? 达州的化妆学校,化妆培训哪家要比较好呀,美丽俏佳人化妆学校怎么样 达州2020年比较好的优秀的化妆学校是哪家?化妆学校招生简章怎么样? 孩子一年级语文怎么学 达州化妆学校哪家好?教的好的化妆学校是哪家? 有没有一起到达州成炼职校学化妆的山友,约起。 为什么我用obs直播时只有超清一个选项 一年级的学习非常重要,那孩子学习语文的重点是什么呢? 胡萝卜虾仁焖饭怎么做好吃 的做法,虾仁包菜饭怎么做好吃,虾仁包菜饭的家常做法 虾仁杂蔬焗饭的做法,虾仁杂蔬焗饭怎么做好吃 虾仁菜泡饭怎么做 虾仁蔬菜焖饭怎么做好吃,虾仁蔬菜焖饭的家 小天才怎么给予微聊录音权限 维生素B1和B6可否长期服用吗 生活中,多肽都有哪些用途 蛋黄多肽有什么作用? 求祥林嫂一生的遭遇,200字左右 海尔冰箱50614s3u1与50614syu1的区别 宁胡“阏氏”拼音 yanzhi 还是yanshi? 阏氏是什么? 阏氏是什么意思 历史上昭君出塞后被匈奴单于封为什么 王昭君和汉元帝是什么关系? 王昭君出塞嫁去了现在的什么地方??是自愿的吗? 宁胡阏氏拼音 yanzhi 还是yanshi 女生送了我一把梳子,什么意思 为什么后世许多文人写王昭君是投江而死?真相是什么? 女生送梳子什么意思啊?? 王昭君的父亲是干什么的 关于沉鱼落雁,闭月羞花“悲剧”之说的典故 做梦梦到送梳子 王昭君是干什么的?