java生成动态gif格式与png格式的验证码(代码4)
来源:互联网 发布:一组数据的加权平均值 编辑:程序博客网 时间:2024/05/21 18:43
- import java.util.Random;
- /**
- * 随机工具类
- * @author wzztestin
- *
- */
- public class Randoms {
- private static final Random RANDOM = new Random();
- // 定义验证码字符.去除了O和I等容易混淆的字母
- public static final char shuzi[] = { '1', '2', '3', '4', '5', '6', '7','8', '9'};
- public static final char chaozuofu[] = { '+', '-', '×', '÷'};
- /**
- * 产生两个数之间的随机数
- *
- * @param min
- * 小数
- * @param max
- * 比min大的数
- * @return int 随机数字
- */
- public static int num(int min, int max) {
- return min + RANDOM.nextInt(max - min);
- }
- /**
- * 产生0--num的随机数,不包括num
- *
- * @param num
- * 数字
- * @return int 随机数字
- */
- public static int num(int num) {
- return RANDOM.nextInt(num);
- }
- public static char getNum() {
- return shuzi[num(0, shuzi.length)];
- }
- public static char getChaoZuoFu() {
- return chaozuofu[num(0, 2)];
- }
- }
- import java.awt.AlphaComposite;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics2D;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- import java.io.OutputStream;
- import javax.imageio.ImageIO;
- /**
- * png格式验证码
- * @author wzztestin
- *
- */
- public class SpecCaptcha extends Captcha {
- public SpecCaptcha() {
- }
- /**
- * 初始化宽高
- * @param width
- * @param height
- */
- public SpecCaptcha(int width, int height) {
- this.width = width;
- this.height = height;
- }
- public SpecCaptcha(int width, int height, int alpha) {
- this(width, height);
- }
- public SpecCaptcha(int width, int height, int len, Font font) {
- this(width, height, len);
- this.font = font;
- }
- /**
- * 生成验证码
- *
- * @throws java.io.IOException
- * IO异常
- */
- @Override
- public void out(OutputStream out) {
- graphicsImage(getVilidCode().toCharArray(), out);
- }
- /**
- * 画随机码图
- *
- * @param strs
- * 文本
- * @param out
- * 输出流
- */
- private boolean graphicsImage(char[] strs, OutputStream out) {
- boolean ok = false;
- try {
- BufferedImage bi = new BufferedImage(width, height,
- BufferedImage.TYPE_INT_RGB);
- Graphics2D g = (Graphics2D) bi.getGraphics();
- AlphaComposite ac3;
- Color color;
- int len = strs.length;
- g.setColor(Color.WHITE);
- g.fillRect(0, 0, width, height);
- // 随机画干扰的蛋蛋
- for (int i = 0; i < 15; i++) {
- color = color(150, 250);
- g.setColor(color);
- g.drawOval(Randoms.num(width), Randoms.num(height),
- 5 + Randoms.num(10), 5 + Randoms.num(10));// 画蛋蛋,有蛋的生活才精彩
- color = null;
- }
- g.setFont(font);
- int h = height - ((height - font.getSize()) >> 1), w = width / len, size = w
- - font.getSize() + 1;
- /* 画字符串 */
- for (int i = 0; i < len; i++) {
- ac3 = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.7f);// 指定透明度
- g.setComposite(ac3);
- color = new Color(20 + Randoms.num(110), 20 + Randoms.num(110),
- 20 + Randoms.num(110));// 对每个字符都用随机颜色
- g.setColor(color);
- g.drawString(strs[i] + "", (width - (len - i) * w) + size,
- h - 4);
- color = null;
- ac3 = null;
- }
- ImageIO.write(bi, "png", out);
- out.flush();
- ok = true;
- } catch (IOException e) {
- ok = false;
- } finally {
- Streams.close(out);
- }
- return ok;
- }
- }
0 0
- java生成动态gif格式与png格式的验证码(代码4)
- java生成动态gif格式与png格式的验证码(代码5)
- java生成动态gif格式与png格式的验证码(代码3)
- java生成动态gif格式与png格式的验证码(代码2)
- java生成动态gif格式与png格式的验证码(代码1)
- 无组件生成验证码-GIF格式
- ASP验证码-GIF格式
- ASP实现无组件生成验证码-GIF格式
- 动态生成gif格式的图像要注意?
- js验证上传的文件是否为JPEG,PNG,JPG,GIF格式
- js验证上传的文件是否为JPEG,PNG,JPG,GIF格式
- png格式分析的代码
- ASP生成验证码-BMP图片原理,GIF格式,无组件生成验证码
- 【代码】PHP 生成GIF动画实现动态图片验证码
- GNU/Linux jpg、png、gif 与 eps 格式的相互转换
- Linux下图片 jpg、png、gif 与 eps 格式的相互转换
- Java 转换png jpg gif格式图片的相互转换的实现
- PNG格式图片(验证码..)不能显示的解决办法
- 用idea创建一个maven web项目
- 多进程和多线程的区别
- The project cannot be built until path errors are resolved
- HTML 背景
- unity-导出插件的dll类库
- java生成动态gif格式与png格式的验证码(代码4)
- 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」
- Eclipse 远程调试
- c#多线程与异步开发 (上)
- java生成动态gif格式与png格式的验证码(代码3)
- Spring(1)总体概述
- English sentenses
- 连连看 深搜带方向
- struts2拦截器的实现原理及源码剖析