java struts2 生成验证码_struts2结合生成验证码

1 importjava.awt.Color;2 importjava.awt.Font;3 importjava.awt.Graphics;4 importjava.awt.image.BufferedImage;5 importjava.io.ByteArrayInputStream;6 importjava.io.ByteArrayOutputStream;7 importjava.io.IOException;8 importjava.util.Random;9 importcom.sun.image.codec.jpeg.ImageFormatException;10 importcom.sun.image.codec.jpeg.JPEGCodec;11 importcom.sun.image.codec.jpeg.JPEGImageEncoder;12 /**

13 * 验证码生成器类,可生成数字、大写、小写字母及三者混合类型的验证码。14 * 支持自定义验证码字符数量;15 * 支持自定义验证码图片的大小;16 * 支持自定义需排除的特殊字符;17 * 支持自定义干扰线的数量;18 * 支持自定义验证码图文颜色19 *@authorshiyz20 *@version1.021 */

22 public classSecurityImage {23 /**

24 * 生成验证码图片25 *@paramsecurityCode 验证码字符26 *@returnBufferedImage 图片27 */

28 public staticBufferedImage createImage(String securityCode){29 //验证码长度

30 int codeLength=securityCode.length();31 //字体大小

32 int fSize = 15;33 int fWidth = fSize + 1;34 //图片宽度

35 int width = codeLength * fWidth + 6;36 //图片高度

37 int height = fSize * 2 + 1;38 //图片

39 BufferedImage image=newBufferedImage(width, height, BufferedImage.TYPE_INT_RGB);40 Graphics g=image.createGraphics();41 //设置背景色

42 g.setColor(Color.WHITE);43 //填充背景

44 g.fillRect(0, 0, width, height);45 //设置边框颜色

46 g.setColor(Color.LIGHT_GRAY);47 //边框字体样式

48 g.setFont(new Font("Arial", Font.BOLD, height - 2));49 //绘制边框

50 g.drawRect(0, 0, width - 1, height -1);51 //绘制噪点

52 Random rand = newRandom();53 //设置噪点颜色

54 g.setColor(Color.LIGHT_GRAY);55 for(int i = 0;i < codeLength * 6;i++){56 int x =rand.nextInt(width);57 int y =rand.nextInt(height);58 //绘制1*1大小的矩形

59 g.drawRect(x, y, 1, 1);60 }61 //绘制验证码

62 int codeY = height - 10;63 //设置字体颜色和样式

64 g.setColor(new Color(19,148,246));65 g.setFont(new Font("Georgia", Font.BOLD, fSize));66 for(int i = 0; i < codeLength;i++){67 g.drawString(String.valueOf(securityCode.charAt(i)), i * 16 + 5, codeY);68 }69 //关闭资源

70 g.dispose();71 returnimage;72 }73 /**

74 * 返回验证码图片的流格式75 *@paramsecurityCode 验证码76 *@returnByteArrayInputStream 图片流77 */

78 public staticByteArrayInputStream getImageAsInputStream(String securityCode){79 BufferedImage image =createImage(securityCode);80 returnconvertImageToStream(image);81 }82 /**

83 * 将BufferedImage转换成ByteArrayInputStream84 *@paramimage 图片85 *@returnByteArrayInputStream 流86 */

87 private staticByteArrayInputStream convertImageToStream(BufferedImage image){88 ByteArrayInputStream inputStream = null;89 ByteArrayOutputStream bos = newByteArrayOutputStream();90 JPEGImageEncoder jpeg =JPEGCodec.createJPEGEncoder(bos);91 try{92 jpeg.encode(image);93 byte[] bts =bos.toByteArray();94 inputStream = newByteArrayInputStream(bts);95 } catch(ImageFormatException e) {96 e.printStackTrace();97 } catch(IOException e) {98 e.printStackTrace();99 }100 returninputStream;101 }102 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值