java 验证码 背景

阅读: 评论:0

java 验证码 背景

java 验证码 背景

不说什么,代码能为我解释。透明的背景重要的一点就是只能在于png格式,而不是jpg格式。

package b.yzmcode.web;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

import javax.imageio.ImageIO;

import org.vention.annotation.Action;

import org.springframework.stereotype.Controller;

import com.shengdai.base.support.struts.BaseStrutsAction;

@Controller

public class YzmCodeAction extends BaseStrutsAction{

/**

*

*/

private static final long serialVersionUID = 1L;

private static final int WIDTH=120;

private static final int HEIGHT = 30;

public YzmCodeAction() {

super();

}

@Action

public void validate() {

BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);

Graphics2D g = ateGraphics();

//1.设置背景颜色

setBackground(g);

//2.设置边框

setBorder(g);

//3.画干扰线

drawRandomLine(g);

//4.生成随机数

String codes = drawRandomNum((Graphics2D)g);

//5.将图像写给浏览器

response.setContentType("image/jpeg");

//设置浏览器清除缓存

response.setDateHeader("expries", -1);

response.setHeader("Cache-Control", "no-cache");

response.setHeader("Pragma", "no-cache");

try {

ImageIO.write(image, "png", OutputStream());

} catch (IOException e) {

e.printStackTrace();

}

}

private String drawRandomNum(Graphics2D g) {

g.setColor(Color.BLACK);

g.setFont(new Font("楷体",Font.BOLD,25));

String base = "1234567890qwertyuiopasdfghjklzxcvbnyQWERTYUIOPASDFGHJKLZXCVBNM";

StringBuffer buffer = new StringBuffer();

int x = 5;

for(int i=0;i<4;i++){

int degree = new Random().nextInt()%30;

String ch = base.charAt(new Random().nextInt(base.length())) + "";

buffer.append(ch);

g.drawString(ch, x, 25);

//必须要有

x+=30;

}

String().toLowerCase();

}

private void drawRandomLine(Graphics g) {

g.setColor(Color.GRAY);

for(int i=0;i<0;i++){

int x1=new Random().nextInt(WIDTH);

int y1 =new Random().nextInt(HEIGHT);

int x2=new Random().nextInt(WIDTH);

int y2 =new Random().nextInt(HEIGHT);

g.drawLine(x1, y1, x2, y2);

}

}

private void setBorder(Graphics g) {

//g.setColor(Color.BLACK);

g.drawRect(1, 1, WIDTH-2, HEIGHT-2);

}

private void setBackground(Graphics2D g) {

//设置背景颜色

//g.setColor(Color.WHITE);

g.setColor(new Color(255, 255, 255, 0));

g.fillRect(0, 0, WIDTH, HEIGHT);

//g.getDeviceConfiguration().createCompatibleImage(WIDTH, HEIGHT, Transparency.TRANSLUCENT);

//g.dispose();

}

}

本文发布于:2024-01-30 01:35:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170654973418305.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:验证码   背景   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23