不说什么,代码能为我解释。透明的背景重要的一点就是只能在于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小时内删除。
留言与评论(共有 0 条评论) |