AbstractCaptcha增加setStroke方法支持线条粗细(issue#IDJQ15@Gitee)

This commit is contained in:
Looly
2026-01-14 11:51:56 +08:00
parent 12547f4d4c
commit fa79eee1ce
5 changed files with 22 additions and 5 deletions

View File

@@ -4,6 +4,7 @@
# 5.8.44(2026-01-12)
### 🐣新特性
* 【core 】 `NumberUtil.parseNumber`增加支持科学计数法pr#4211@Github
* 【captcha】 `AbstractCaptcha`增加`setStroke`方法支持线条粗细issue#IDJQ15@Gitee
### 🐞Bug修复
* 【json 】 修复`JSONUtil.wrap`忽略错误问题issue#4210@Github

View File

@@ -9,10 +9,7 @@ import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.URLUtil;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -65,6 +62,7 @@ public abstract class AbstractCaptcha implements ICaptcha {
* 文字透明度
*/
protected AlphaComposite textAlpha;
protected Stroke stroke;
/**
* 构造,使用随机验证码生成器生成验证码
@@ -271,4 +269,13 @@ public abstract class AbstractCaptcha implements ICaptcha {
this.textAlpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, textAlpha);
}
/**
* 设置画笔线条特征,如线条宽度等
*
* @param stroke 画笔
* @since 5.8.44
*/
public void setStroke(Stroke stroke) {
this.stroke = stroke;
}
}

View File

@@ -118,6 +118,11 @@ public class CircleCaptcha extends AbstractCaptcha {
* @param g {@link Graphics2D}
*/
private void drawInterfere(Graphics2D g) {
// issue#IDJQ15 自定义线条特征(粗细等)
if(null != this.stroke){
g.setStroke(this.stroke);
}
final ThreadLocalRandom random = RandomUtil.getRandom();
for (int i = 0; i < this.interfereCount; i++) {

View File

@@ -110,6 +110,11 @@ public class LineCaptcha extends AbstractCaptcha {
* @param g {@link Graphics2D}画笔
*/
private void drawInterfere(Graphics2D g) {
// issue#IDJQ15 自定义线条特征(粗细等)
if(null != this.stroke){
g.setStroke(this.stroke);
}
final ThreadLocalRandom random = RandomUtil.getRandom();
// 干扰线
for (int i = 0; i < this.interfereCount; i++) {

View File

@@ -193,7 +193,6 @@ public class ShearCaptcha extends AbstractCaptcha {
*/
@SuppressWarnings("SameParameterValue")
private void drawInterfere(Graphics g, int x1, int y1, int x2, int y2, int thickness, Color c) {
// The thick line is in fact a filled polygon
g.setColor(c);
int dX = x2 - x1;