您的位置:首页 > 编程语言 > Java开发

如何把java生成打的验证码生成图片,并输出到文件夹

2018-01-23 13:56 507 查看
1.生成验证码图片

/**
* 已有验证码,生成验证码图片
* @param textCode       文本验证码
* @param width          图片宽度(注意此宽度若过小,容易造成验证码文本显示不全,如4个字符的文本可使用85到90的宽度)
* @param height         图片高度
* @param interLine      图片中干扰线的条数
* @param randomLocation 每个字符的高低位置是否随机
* @param backColor      图片颜色,若为null则表示采用随机颜色
* @param foreColor      字体颜色,若为null则表示采用随机颜色
* @param lineColor      干扰线颜色,若为null则表示采用随机颜色
* @return 图片缓存对象
*/
public static BufferedImage generateImageCode(String textCode, int width, int height, int interLine, boolean randomLocation, Color backColor, Color foreColor, Color lineColor){
//创建内存图像
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//获取图形上下文
Graphics graphics = bufferedImage.getGraphics();
//画背景图
graphics.setColor(null==backColor ? generateRandomColor() : backColor);
graphics.fillRect(0, 0, width, height);
//画干扰线
Random random = new Random();
if(interLine > 0){
int x = 0, y = 0, x1 = width, y1 = 0;
for(int i=0; i<interLine; i++){
graphics.setColor(null==lineColor ? generateRandomColor() : lineColor);
y = random.nextInt(height);
y1 = random.nextInt(height);
graphics.drawLine(x, y, x1, y1);
}
}
//字体大小为图片高度的80%
int fsize = (int)(height * 0.8);
//验证码的横纵坐标
int fx = height - fsize-10;
int fy = fsize;
//设定字体
graphics.setFont(new Font("Default", Font.PLAIN, fsize));
//写验证码字符
for(int i=0; i<textCode.length(); i++){
fy = randomLocation ? (int)((Math.random()*0.3+0.6)*height) : fy;
graphics.setColor(null==foreColor ? generateRandomColor() : foreColor);
//将验证码字符显示到图象中
System.out.println(textCode.charAt(i));
graphics.drawString(textCode.charAt(i)+"", fx, fy);
fx += fsize * 0.65;
}
graphics.dispose();
return bufferedImage;
}


2.通过ImageIO.write()方法,将图片输出到文件夹

BufferedImage img=VerifyCodeUtil.generateImageCode(code, 105, 51, 3, false, null, null, null);
try{
boolean flag=ImageIO.write(img, "jpg", new File("d:/com/verify.jpg"));
//System.out.println(flag);
}catch(Exception e){
e.printStackTrace();
}


有问题请留下意见!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: