生成图片验证码

发布时间:2024-12-05 07:23

购买图书,可以通过扫描条形码或二维码验证真伪。 #生活常识# #购物消费技巧# #防假伪知识#

生成图片验证码

最新推荐文章于 2024-10-23 12:18:41 发布

learnTech 于 2013-04-09 14:11:20 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

login.jsp页面显示验证码图片

验证码:<s:textfield name="rand" size="5"></s:textfield>

<img src="random.action" οnclick="changeValidateCode(this)" title="点击图片刷新验证码"/>

function changeValidateCode(obj){

var timenow = new Date().getTime();

obj.src="random.action?date="+timenow;

}

配置random.xml,设置图片流格式

<action name="random" class="com.action.RandomAction">

<result type="stream">

<param name="contentType">image/jpeg</param>

<param name="inputName">inputStream</param>

</result>

</action>

RandomAction.java

public class RandomAction extends ActionSupport {

private ByteArrayInputStream inputStream;

public String execute() throws Exception{

RandomNumUtil random = RandomNumUtil.Instance();

inputStream = random.getImage();

ServletActionContext.getContext().getSession().put("random", random.getStr());

return SUCCESS;

}

}

Random工具类:RandomNumUtil.java

public class RandomNumUtil {

private ByteArrayInputStream image;

private String str;

public static RandomNumUtil Instance() {

return new RandomNumUtil();

}

public RandomNumUtil() {

init();

}

private void init() {

int width=85, height=20;

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(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);

}

String sRand="";

for (int i=0;i<6;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);

}

str = sRand;

g.dispose();

ByteArrayInputStream input=null;

ByteArrayOutputStream output = new ByteArrayOutputStream();

try{

ImageOutputStream imageOut = ImageIO.createImageOutputStream(output);

ImageIO.write(image, "JPEG", imageOut);

imageOut.close();

input = new ByteArrayInputStream(output.toByteArray());

}catch(Exception e){

System.out.println("验证码图片产生出现错误:"+e.toString());

}

image=input;

}

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

}

}

网址:生成图片验证码 https://www.yuejiaxmz.com/news/view/381857

相关内容

java图片验证码
验证码是4+5=怎么输入
节能产品证书图片
中国节能证书图片
如何自动化解决或破解文字、图像、滑块、点选等验证码问题
让测试人头疼的web自动化之验证码识别彻底解决方案
Google PhotoScan怎么将旧照片变成数码照片 Google PhotoScan将旧照片变成数码照片介绍
老照片旧照片怎么修复翻新成数码照片?
IllostrationAI:AI插图生成平台 几秒钟生成高质量插图
生活图图片

随便看看