mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
增加设置验证码大小和针对alias注释
This commit is contained in:
@@ -99,12 +99,25 @@ public abstract class AbstractCaptcha implements ICaptcha {
|
||||
* @param interfereCount 验证码干扰元素个数
|
||||
*/
|
||||
public AbstractCaptcha(final int width, final int height, final CodeGenerator generator, final int interfereCount) {
|
||||
this(width, height, generator, interfereCount, 0.75f);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param generator 验证码生成器
|
||||
* @param interfereCount 验证码干扰元素个数
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
*/
|
||||
public AbstractCaptcha(final int width, final int height, final CodeGenerator generator, final int interfereCount, final float sizeBaseHeight) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.generator = generator;
|
||||
this.interfereCount = interfereCount;
|
||||
// 字体高度设为验证码高度-2,留边距
|
||||
this.font = new Font(Font.SANS_SERIF, Font.PLAIN, (int) (this.height * 0.75));
|
||||
this.font = new Font(Font.SANS_SERIF, Font.PLAIN, (int) (this.height * sizeBaseHeight));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -114,7 +127,7 @@ public abstract class AbstractCaptcha implements ICaptcha {
|
||||
final ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
|
||||
Image image = null;
|
||||
try{
|
||||
try {
|
||||
image = createImage(this.code);
|
||||
ImgUtil.writePng(image, out);
|
||||
} finally {
|
||||
@@ -222,7 +235,7 @@ public abstract class AbstractCaptcha implements ICaptcha {
|
||||
* @return 图片带文件格式的 Base64
|
||||
* @since 5.3.11
|
||||
*/
|
||||
public String getImageBase64Data(){
|
||||
public String getImageBase64Data() {
|
||||
return UrlUtil.getDataUriBase64("image/png", getImageBase64());
|
||||
}
|
||||
|
||||
|
@@ -44,6 +44,21 @@ public class CaptchaUtil {
|
||||
return new LineCaptcha(width, height, codeCount, lineCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建线干扰的验证码
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param lineCount 干扰线条数
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
* @return {@link LineCaptcha}
|
||||
*/
|
||||
public static LineCaptcha ofLineCaptcha(final int width, final int height, final int codeCount,
|
||||
final int lineCount, final float sizeBaseHeight) {
|
||||
return new LineCaptcha(width, height, codeCount, lineCount, sizeBaseHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建圆圈干扰的验证码,默认5位验证码,15个干扰圈
|
||||
*
|
||||
@@ -70,6 +85,21 @@ public class CaptchaUtil {
|
||||
return new CircleCaptcha(width, height, codeCount, circleCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建圆圈干扰的验证码
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param circleCount 干扰圆圈条数
|
||||
* @param size 字体的大小 高度的倍数
|
||||
* @return {@link CircleCaptcha}
|
||||
*/
|
||||
public static CircleCaptcha ofCircleCaptcha(final int width, final int height, final int codeCount,
|
||||
final int circleCount, final float size) {
|
||||
return new CircleCaptcha(width, height, codeCount, circleCount, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建扭曲干扰的验证码,默认5位验证码
|
||||
*
|
||||
@@ -96,6 +126,20 @@ public class CaptchaUtil {
|
||||
return new ShearCaptcha(width, height, codeCount, thickness);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建扭曲干扰的验证码,默认5位验证码
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param thickness 干扰线宽度
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
* @return {@link ShearCaptcha}
|
||||
*/
|
||||
public static ShearCaptcha ofShearCaptcha(final int width, final int height, final int codeCount, final int thickness, final float sizeBaseHeight) {
|
||||
return new ShearCaptcha(width, height, codeCount, thickness, sizeBaseHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建GIF验证码
|
||||
*
|
||||
@@ -118,4 +162,19 @@ public class CaptchaUtil {
|
||||
public static GifCaptcha ofGifCaptcha(final int width, final int height, final int codeCount) {
|
||||
return new GifCaptcha(width, height, codeCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建圆圈干扰的验证码
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param thickness 验证码干扰元素个数
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
* @return {@link GifCaptcha}
|
||||
*/
|
||||
public static GifCaptcha ofGifCaptcha(final int width, final int height, final int codeCount,
|
||||
final int thickness, final float sizeBaseHeight) {
|
||||
return new GifCaptcha(width, height, codeCount, thickness, sizeBaseHeight);
|
||||
}
|
||||
}
|
||||
|
@@ -30,7 +30,6 @@ import java.util.concurrent.ThreadLocalRandom;
|
||||
*
|
||||
* @author looly
|
||||
* @since 3.2.3
|
||||
*
|
||||
*/
|
||||
public class CircleCaptcha extends AbstractCaptcha {
|
||||
private static final long serialVersionUID = -7096627300356535494L;
|
||||
@@ -38,7 +37,7 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
*/
|
||||
public CircleCaptcha(final int width, final int height) {
|
||||
@@ -48,8 +47,8 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
*/
|
||||
public CircleCaptcha(final int width, final int height, final int codeCount) {
|
||||
@@ -59,9 +58,9 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param interfereCount 验证码干扰元素个数
|
||||
*/
|
||||
public CircleCaptcha(final int width, final int height, final int codeCount, final int interfereCount) {
|
||||
@@ -80,12 +79,25 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
super(width, height, generator, interfereCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param interfereCount 验证码干扰元素个数
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
*/
|
||||
public CircleCaptcha(final int width, final int height, final int codeCount, final int interfereCount, final float sizeBaseHeight) {
|
||||
super(width, height, new RandomGenerator(codeCount), interfereCount, sizeBaseHeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Image createImage(final String code) {
|
||||
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
||||
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjUtil.defaultIfNull(this.background, Color.WHITE));
|
||||
|
||||
try{
|
||||
try {
|
||||
// 随机画干扰圈圈
|
||||
drawInterfere(g);
|
||||
|
||||
@@ -99,10 +111,11 @@ public class CircleCaptcha extends AbstractCaptcha {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------------------- Private method start
|
||||
|
||||
/**
|
||||
* 绘制字符串
|
||||
*
|
||||
* @param g {@link Graphics2D}画笔
|
||||
* @param g {@link Graphics2D}画笔
|
||||
* @param code 验证码
|
||||
*/
|
||||
private void drawString(final Graphics2D g, final String code) {
|
||||
|
@@ -86,6 +86,19 @@ public class GifCaptcha extends AbstractCaptcha {
|
||||
super(width, height, generator, interfereCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 验证码个数
|
||||
* @param interfereCount 验证码干扰元素个数
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
*/
|
||||
public GifCaptcha(final int width, final int height, final int codeCount, final int interfereCount, final float sizeBaseHeight) {
|
||||
super(width, height, new RandomGenerator(codeCount), interfereCount, sizeBaseHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置图像的颜色量化(转换质量 由GIF规范允许的最大256种颜色)。
|
||||
* 低的值(最小值= 1)产生更好的颜色,但处理显著缓慢。
|
||||
|
@@ -36,10 +36,11 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
private static final long serialVersionUID = 8691294460763091089L;
|
||||
|
||||
// -------------------------------------------------------------------- Constructor start
|
||||
|
||||
/**
|
||||
* 构造,默认5位验证码,150条干扰线
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
*/
|
||||
public LineCaptcha(final int width, final int height) {
|
||||
@@ -49,8 +50,8 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param lineCount 干扰线条数
|
||||
*/
|
||||
@@ -69,6 +70,19 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
public LineCaptcha(final int width, final int height, final CodeGenerator generator, final int interfereCount) {
|
||||
super(width, height, generator, interfereCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param interfereCount 验证码干扰元素个数
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
*/
|
||||
public LineCaptcha(final int width, final int height, final int codeCount, final int interfereCount, final float sizeBaseHeight) {
|
||||
super(width, height, new RandomGenerator(codeCount), interfereCount, sizeBaseHeight);
|
||||
}
|
||||
// -------------------------------------------------------------------- Constructor end
|
||||
|
||||
@Override
|
||||
@@ -77,7 +91,7 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
||||
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjUtil.defaultIfNull(this.background, Color.WHITE));
|
||||
|
||||
try{
|
||||
try {
|
||||
// 干扰线
|
||||
drawInterfere(g);
|
||||
|
||||
@@ -91,10 +105,11 @@ public class LineCaptcha extends AbstractCaptcha {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------------------- Private method start
|
||||
|
||||
/**
|
||||
* 绘制字符串
|
||||
*
|
||||
* @param g {@link Graphics}画笔
|
||||
* @param g {@link Graphics}画笔
|
||||
* @param code 验证码
|
||||
*/
|
||||
private void drawString(final Graphics2D g, final String code) {
|
||||
|
@@ -30,7 +30,6 @@ import java.awt.image.BufferedImage;
|
||||
*
|
||||
* @author looly
|
||||
* @since 3.2.3
|
||||
*
|
||||
*/
|
||||
public class ShearCaptcha extends AbstractCaptcha {
|
||||
private static final long serialVersionUID = -7096627300356535494L;
|
||||
@@ -38,7 +37,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
*/
|
||||
public ShearCaptcha(final int width, final int height) {
|
||||
@@ -48,8 +47,8 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
*/
|
||||
public ShearCaptcha(final int width, final int height, final int codeCount) {
|
||||
@@ -59,8 +58,8 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param thickness 干扰线宽度
|
||||
*/
|
||||
@@ -80,12 +79,25 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
super(width, height, generator, interfereCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param width 图片宽
|
||||
* @param height 图片高
|
||||
* @param codeCount 字符个数
|
||||
* @param interfereCount 验证码干扰元素个数
|
||||
* @param sizeBaseHeight 字体的大小 高度的倍数
|
||||
*/
|
||||
public ShearCaptcha(final int width, final int height, final int codeCount, final int interfereCount, final float sizeBaseHeight) {
|
||||
super(width, height, new RandomGenerator(codeCount), interfereCount, sizeBaseHeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Image createImage(final String code) {
|
||||
final BufferedImage image = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_RGB);
|
||||
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjUtil.defaultIfNull(this.background, Color.WHITE));
|
||||
|
||||
try{
|
||||
try {
|
||||
// 画字符串
|
||||
drawString(g, code);
|
||||
// 扭曲
|
||||
@@ -100,10 +112,11 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------------------- Private method start
|
||||
|
||||
/**
|
||||
* 绘制字符串
|
||||
*
|
||||
* @param g {@link Graphics}画笔
|
||||
* @param g {@link Graphics}画笔
|
||||
* @param code 验证码
|
||||
*/
|
||||
private void drawString(final Graphics2D g, final String code) {
|
||||
@@ -117,9 +130,9 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 扭曲
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 w1
|
||||
* @param h1 h1
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 w1
|
||||
* @param h1 h1
|
||||
* @param color 颜色
|
||||
*/
|
||||
private void shear(final Graphics g, final int w1, final int h1, final Color color) {
|
||||
@@ -130,9 +143,9 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* X坐标扭曲
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 宽
|
||||
* @param h1 高
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 宽
|
||||
* @param h1 高
|
||||
* @param color 颜色
|
||||
*/
|
||||
private void shearX(final Graphics g, final int w1, final int h1, final Color color) {
|
||||
@@ -155,9 +168,9 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* Y坐标扭曲
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 宽
|
||||
* @param h1 高
|
||||
* @param g {@link Graphics}
|
||||
* @param w1 宽
|
||||
* @param h1 高
|
||||
* @param color 颜色
|
||||
*/
|
||||
private void shearY(final Graphics g, final int w1, final int h1, final Color color) {
|
||||
@@ -180,13 +193,13 @@ public class ShearCaptcha extends AbstractCaptcha {
|
||||
/**
|
||||
* 干扰线
|
||||
*
|
||||
* @param g {@link Graphics}
|
||||
* @param x1 x1
|
||||
* @param y1 y1
|
||||
* @param x2 x2
|
||||
* @param y2 y2
|
||||
* @param g {@link Graphics}
|
||||
* @param x1 x1
|
||||
* @param y1 y1
|
||||
* @param x2 x2
|
||||
* @param y2 y2
|
||||
* @param thickness 粗细
|
||||
* @param c 颜色
|
||||
* @param c 颜色
|
||||
*/
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private void drawInterfere(final Graphics g, final int x1, final int y1, final int x2, final int y2, final int thickness, final Color c) {
|
||||
|
Reference in New Issue
Block a user