U 优化代码

This commit is contained in:
天爱有情
2022-05-11 15:03:50 +08:00
parent 6394c64bf7
commit 7c6fec6ea3
8 changed files with 148 additions and 92 deletions
@@ -4,6 +4,7 @@ import cloud.tianai.captcha.generator.common.model.dto.GenerateParam;
import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo;
import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils; import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils;
import cloud.tianai.captcha.generator.common.util.ImgWriter; import cloud.tianai.captcha.generator.common.util.ImgWriter;
import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
import cloud.tianai.captcha.resource.common.model.dto.Resource; import cloud.tianai.captcha.resource.common.model.dto.Resource;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -36,6 +37,41 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener
/** 默认滑块图片类型. */ /** 默认滑块图片类型. */
public String defaultSliderImageType = DEFAULT_SLIDER_IMAGE_TYPE; public String defaultSliderImageType = DEFAULT_SLIDER_IMAGE_TYPE;
@Getter
@Setter
/** 资源管理器. */
protected ImageCaptchaResourceManager imageCaptchaResourceManager;
/** 初始化默认资源. */
@Getter
@Setter
protected boolean initDefaultResource = false;
@Getter
private boolean init = false;
public AbstractImageCaptchaGenerator() {
}
@Override
public ImageCaptchaGenerator init() {
if (init) {
return this;
}
try {
doInit();
} catch (Exception e) {
log.error("[{}]初始化失败,ex", this.getClass().getSimpleName(), e);
throw e;
}
init = true;
return this;
}
public AbstractImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) {
this.imageCaptchaResourceManager = imageCaptchaResourceManager;
this.initDefaultResource = initDefaultResource;
}
@Override @Override
public ImageCaptchaInfo generateCaptchaImage(String type) { public ImageCaptchaInfo generateCaptchaImage(String type) {
return generateCaptchaImage(type, defaultBgImageType, defaultSliderImageType); return generateCaptchaImage(type, defaultBgImageType, defaultSliderImageType);
@@ -104,4 +140,14 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener
return getImageResourceManager().getResourceInputStream(resource); return getImageResourceManager().getResourceInputStream(resource);
} }
/**
* 初始化
*/
protected abstract void doInit();
@Override
public ImageCaptchaResourceManager getImageResourceManager() {
return imageCaptchaResourceManager;
}
} }
@@ -1,6 +1,5 @@
package cloud.tianai.captcha.generator; package cloud.tianai.captcha.generator;
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; import cloud.tianai.captcha.generator.common.model.dto.GenerateParam;
import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo;
@@ -14,6 +13,11 @@ import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
public interface ImageCaptchaGenerator { public interface ImageCaptchaGenerator {
/**
* 初始化
*/
ImageCaptchaGenerator init();
/** /**
* 生成验证码图片 * 生成验证码图片
* *
@@ -1,12 +1,11 @@
package cloud.tianai.captcha.generator.impl; package cloud.tianai.captcha.generator.impl;
import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition;
import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils;
import cloud.tianai.captcha.generator.AbstractImageCaptchaGenerator; import cloud.tianai.captcha.generator.AbstractImageCaptchaGenerator;
import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition; import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition;
import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; import cloud.tianai.captcha.generator.common.model.dto.GenerateParam;
import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo;
import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils; import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils;
import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
import cloud.tianai.captcha.resource.common.model.dto.Resource; import cloud.tianai.captcha.resource.common.model.dto.Resource;
import lombok.*; import lombok.*;
@@ -16,8 +15,6 @@ import java.io.InputStream;
import java.util.*; import java.util.*;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import static cloud.tianai.captcha.generator.common.util.CaptchaImageUtils.wrapFile2BufferedImage;
/** /**
* @Author: 天爱有情 * @Author: 天爱有情
* @date 2022/4/27 11:46 * @date 2022/4/27 11:46
@@ -34,6 +31,14 @@ public abstract class AbstractClickImageCaptchaGenerator extends AbstractImageCa
@Setter @Setter
protected Integer interferenceCount = 2; protected Integer interferenceCount = 2;
public AbstractClickImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) {
super(imageCaptchaResourceManager, initDefaultResource);
}
public AbstractClickImageCaptchaGenerator() {
}
@SneakyThrows @SneakyThrows
@Override @Override
public ImageCaptchaInfo generateCaptchaImage(GenerateParam param) { public ImageCaptchaInfo generateCaptchaImage(GenerateParam param) {
@@ -97,7 +102,6 @@ public abstract class AbstractClickImageCaptchaGenerator extends AbstractImageCa
} }
} }
/** /**
* 随机获取点击的图片 * 随机获取点击的图片
* *
@@ -7,9 +7,12 @@ import cloud.tianai.captcha.generator.ImageCaptchaGenerator;
import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; import cloud.tianai.captcha.generator.common.model.dto.GenerateParam;
import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo;
import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
import lombok.Getter;
import lombok.Setter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.function.BiFunction;
/** /**
* @Author: 天爱有情 * @Author: 天爱有情
@@ -19,27 +22,42 @@ import java.util.Map;
public class MultiImageCaptchaGenerator extends AbstractImageCaptchaGenerator { public class MultiImageCaptchaGenerator extends AbstractImageCaptchaGenerator {
private Map<String, ImageCaptchaGenerator> imageCaptchaGeneratorMap = new HashMap<>(4); private Map<String, ImageCaptchaGenerator> imageCaptchaGeneratorMap = new HashMap<>(4);
private Map<String, BiFunction<String, MultiImageCaptchaGenerator, ImageCaptchaGenerator>> imageCaptchaGeneratorProviderMap = new HashMap<>(4);
private ImageCaptchaResourceManager imageCaptchaResourceManager; @Setter
private boolean initDefaultResource; @Getter
private String defaultCaptcha = CaptchaTypeConstant.SLIDER; private String defaultCaptcha = CaptchaTypeConstant.SLIDER;
public MultiImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) { public MultiImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) {
this.imageCaptchaResourceManager = imageCaptchaResourceManager; super(imageCaptchaResourceManager, initDefaultResource);
this.initDefaultResource = initDefaultResource;
init();
} }
protected void init() { @Override
protected void doInit() {
// 滑块验证码 // 滑块验证码
addImageCaptchaGenerator(CaptchaTypeConstant.SLIDER, new StandardSliderImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource)); addImageCaptchaGeneratorProvider(CaptchaTypeConstant.SLIDER, (type, context) ->
new StandardSliderImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource).init());
// 旋转验证码 // 旋转验证码
addImageCaptchaGenerator(CaptchaTypeConstant.ROTATE, new StandardRotateImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource)); addImageCaptchaGeneratorProvider(CaptchaTypeConstant.ROTATE, (type, context) ->
new StandardRotateImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource).init());
// 拼接验证码 // 拼接验证码
addImageCaptchaGenerator(CaptchaTypeConstant.CONCAT, new StandardConcatImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource)); addImageCaptchaGeneratorProvider(CaptchaTypeConstant.CONCAT, (type, context) ->
new StandardConcatImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource).init());
// 点选文字验证码 // 点选文字验证码
addImageCaptchaGenerator(CaptchaTypeConstant.WORD_IMAGE_CLICK, new StandardRandomWordClickImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource)); addImageCaptchaGeneratorProvider(CaptchaTypeConstant.WORD_IMAGE_CLICK, (type, context) ->
new StandardRandomWordClickImageCaptchaGenerator(imageCaptchaResourceManager, initDefaultResource).init());
}
public void addImageCaptchaGeneratorProvider(String key, BiFunction<String, MultiImageCaptchaGenerator, ImageCaptchaGenerator> provider) {
imageCaptchaGeneratorProviderMap.put(key, provider);
}
public BiFunction<String, MultiImageCaptchaGenerator, ImageCaptchaGenerator> removeImageCaptchaGeneratorProvider(String key) {
return imageCaptchaGeneratorProviderMap.remove(key);
}
public BiFunction<String, MultiImageCaptchaGenerator, ImageCaptchaGenerator> getImageCaptchaGeneratorProvider(String key) {
return imageCaptchaGeneratorProviderMap.get(key);
} }
public void addImageCaptchaGenerator(String key, ImageCaptchaGenerator captchaGenerator) { public void addImageCaptchaGenerator(String key, ImageCaptchaGenerator captchaGenerator) {
@@ -50,6 +68,10 @@ public class MultiImageCaptchaGenerator extends AbstractImageCaptchaGenerator {
return imageCaptchaGeneratorMap.remove(key); return imageCaptchaGeneratorMap.remove(key);
} }
public ImageCaptchaGenerator getImageCaptchaGenerator(String key) {
return imageCaptchaGeneratorMap.get(key);
}
@Override @Override
public ImageCaptchaInfo generateCaptchaImage(GenerateParam param) { public ImageCaptchaInfo generateCaptchaImage(GenerateParam param) {
String type = param.getType(); String type = param.getType();
@@ -59,14 +81,13 @@ public class MultiImageCaptchaGenerator extends AbstractImageCaptchaGenerator {
} }
ImageCaptchaGenerator imageCaptchaGenerator = imageCaptchaGeneratorMap.get(type); ImageCaptchaGenerator imageCaptchaGenerator = imageCaptchaGeneratorMap.get(type);
if (imageCaptchaGenerator == null) { if (imageCaptchaGenerator == null) {
BiFunction<String, MultiImageCaptchaGenerator, ImageCaptchaGenerator> provider = imageCaptchaGeneratorProviderMap.get(type);
if (provider == null) {
throw new IllegalArgumentException("生成验证码失败,错误的type类型:" + type); throw new IllegalArgumentException("生成验证码失败,错误的type类型:" + type);
} }
imageCaptchaGenerator = imageCaptchaGeneratorMap.computeIfAbsent(type, k -> provider.apply(k, this));
}
return imageCaptchaGenerator.generateCaptchaImage(param); return imageCaptchaGenerator.generateCaptchaImage(param);
} }
@Override
public ImageCaptchaResourceManager getImageResourceManager() {
return imageCaptchaResourceManager;
}
} }
@@ -30,7 +30,11 @@ public class StandardConcatImageCaptchaGenerator extends AbstractImageCaptchaGen
protected ImageCaptchaResourceManager imageCaptchaResourceManager; protected ImageCaptchaResourceManager imageCaptchaResourceManager;
public StandardConcatImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) { public StandardConcatImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) {
this.imageCaptchaResourceManager = imageCaptchaResourceManager; super(imageCaptchaResourceManager, initDefaultResource);
}
@Override
protected void doInit() {
if (initDefaultResource) { if (initDefaultResource) {
initDefaultResource(); initDefaultResource();
} }
@@ -91,9 +95,4 @@ public class StandardConcatImageCaptchaGenerator extends AbstractImageCaptchaGen
imageCaptchaInfo.setTolerant(0.05F); imageCaptchaInfo.setTolerant(0.05F);
return imageCaptchaInfo; return imageCaptchaInfo;
} }
@Override
public ImageCaptchaResourceManager getImageResourceManager() {
return imageCaptchaResourceManager;
}
} }
@@ -1,9 +1,5 @@
package cloud.tianai.captcha.generator.impl; package cloud.tianai.captcha.generator.impl;
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
import cloud.tianai.captcha.common.util.FontUtils;
import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition;
import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils;
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
import cloud.tianai.captcha.common.util.FontUtils; import cloud.tianai.captcha.common.util.FontUtils;
import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition; import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition;
@@ -14,66 +10,78 @@ import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
import cloud.tianai.captcha.resource.ResourceStore; import cloud.tianai.captcha.resource.ResourceStore;
import cloud.tianai.captcha.resource.common.model.dto.Resource; import cloud.tianai.captcha.resource.common.model.dto.Resource;
import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider; import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider;
import lombok.Data; import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import sun.font.FontDesignMetrics; import sun.font.FontDesignMetrics;
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH;
/** /**
* @Author: 天爱有情 * @Author: 天爱有情
* @date 2022/4/27 11:46 * @date 2022/4/27 11:46
* @Description 点选验证码 * @Description 点选验证码
*/ */
@Data
public class StandardRandomWordClickImageCaptchaGenerator extends AbstractClickImageCaptchaGenerator { public class StandardRandomWordClickImageCaptchaGenerator extends AbstractClickImageCaptchaGenerator {
protected ImageCaptchaResourceManager imageCaptchaResourceManager;
/** 字体包. */ /** 字体包. */
@Getter
@Setter
protected Font font; protected Font font;
@Getter
@Setter
protected FontDesignMetrics metrics; protected FontDesignMetrics metrics;
@Getter
@Setter
protected Integer clickImgWidth = 80; protected Integer clickImgWidth = 80;
@Getter
@Setter
protected Integer clickImgHeight = 80; protected Integer clickImgHeight = 80;
@Getter
@Setter
protected int tipImageInterferenceLineNum = 2; protected int tipImageInterferenceLineNum = 2;
@Getter
@Setter
protected int tipImageInterferencePointNum = 5; protected int tipImageInterferencePointNum = 5;
@SneakyThrows @SneakyThrows
public StandardRandomWordClickImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) { public StandardRandomWordClickImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) {
super(imageCaptchaResourceManager, initDefaultResource);
this.imageCaptchaResourceManager = imageCaptchaResourceManager; this.imageCaptchaResourceManager = imageCaptchaResourceManager;
if (initDefaultResource) {
initDefaultResource();
} }
@Override
@SneakyThrows({IOException.class, FontFormatException.class})
protected void doInit() {
if (this.font == null) {
// 使用默认字体 // 使用默认字体
Resource fontResource = new Resource(null, "META-INF/fonts/SIMSUN.TTC"); Resource fontResource = new Resource(null, "META-INF/fonts/SIMSUN.TTC");
InputStream inputStream = new ClassPathResourceProvider().doGetResourceInputStream(fontResource); InputStream inputStream = new ClassPathResourceProvider().doGetResourceInputStream(fontResource);
Font font = Font.createFont(Font.TRUETYPE_FONT, inputStream); Font font = Font.createFont(Font.TRUETYPE_FONT, inputStream);
font = font.deriveFont(Font.BOLD, 70); this.font = font.deriveFont(Font.BOLD, 70);
}
this.metrics = FontDesignMetrics.getMetrics(font); this.metrics = FontDesignMetrics.getMetrics(font);
this.font = font; if (initDefaultResource) {
setClickImgHeight(clickImgWidth); initDefaultResource();
setClickImgWidth(clickImgHeight); }
} }
public StandardRandomWordClickImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, public StandardRandomWordClickImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager,
boolean initDefaultResource, boolean initDefaultResource,
Font font) { Font font) {
super(imageCaptchaResourceManager, initDefaultResource);
this.imageCaptchaResourceManager = imageCaptchaResourceManager; this.imageCaptchaResourceManager = imageCaptchaResourceManager;
this.font = font; this.font = font;
this.metrics = FontDesignMetrics.getMetrics(font);
setClickImgWidth(font.getSize() + 10);
setClickImgHeight(font.getSize() + 10);
if (initDefaultResource) {
initDefaultResource();
}
} }
public void initDefaultResource() { public void initDefaultResource() {
ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore(); ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore();
// 添加一些系统的资源文件 // 添加一些系统的资源文件
@@ -132,9 +140,4 @@ public class StandardRandomWordClickImageCaptchaGenerator extends AbstractClickI
return clickImageCaptchaInfo; return clickImageCaptchaInfo;
} }
@Override
public ImageCaptchaResourceManager getImageResourceManager() {
return imageCaptchaResourceManager;
}
} }
@@ -11,16 +11,6 @@ import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
import cloud.tianai.captcha.resource.ResourceStore; import cloud.tianai.captcha.resource.ResourceStore;
import cloud.tianai.captcha.resource.common.model.dto.Resource; import cloud.tianai.captcha.resource.common.model.dto.Resource;
import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider; import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider;
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
import cloud.tianai.captcha.generator.AbstractImageCaptchaGenerator;
import cloud.tianai.captcha.generator.common.constant.SliderCaptchaConstant;
import cloud.tianai.captcha.generator.common.model.dto.GenerateParam;
import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo;
import cloud.tianai.captcha.generator.common.model.dto.RotateImageCaptchaInfo;
import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
import cloud.tianai.captcha.resource.ResourceStore;
import cloud.tianai.captcha.resource.common.model.dto.Resource;
import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@@ -32,10 +22,6 @@ import java.util.LinkedList;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import static cloud.tianai.captcha.generator.common.util.CaptchaImageUtils.*;
import static cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH;
import static cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH;
/** /**
* @Author: 天爱有情 * @Author: 天爱有情
* @date 2022/4/22 16:43 * @date 2022/4/22 16:43
@@ -46,7 +32,12 @@ public class StandardRotateImageCaptchaGenerator extends AbstractImageCaptchaGen
protected final ImageCaptchaResourceManager imageCaptchaResourceManager; protected final ImageCaptchaResourceManager imageCaptchaResourceManager;
public StandardRotateImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) { public StandardRotateImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, boolean initDefaultResource) {
super(imageCaptchaResourceManager, initDefaultResource);
this.imageCaptchaResourceManager = imageCaptchaResourceManager; this.imageCaptchaResourceManager = imageCaptchaResourceManager;
}
@Override
protected void doInit() {
if (initDefaultResource) { if (initDefaultResource) {
initDefaultResource(); initDefaultResource();
} }
@@ -133,9 +124,4 @@ public class StandardRotateImageCaptchaGenerator extends AbstractImageCaptchaGen
); );
} }
@Override
public ImageCaptchaResourceManager getImageResourceManager() {
return imageCaptchaResourceManager;
}
} }
@@ -1,13 +1,12 @@
package cloud.tianai.captcha.generator.impl; package cloud.tianai.captcha.generator.impl;
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils;
import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; import cloud.tianai.captcha.common.constant.CaptchaTypeConstant;
import cloud.tianai.captcha.generator.AbstractImageCaptchaGenerator; import cloud.tianai.captcha.generator.AbstractImageCaptchaGenerator;
import cloud.tianai.captcha.generator.common.constant.SliderCaptchaConstant; import cloud.tianai.captcha.generator.common.constant.SliderCaptchaConstant;
import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; import cloud.tianai.captcha.generator.common.model.dto.GenerateParam;
import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo;
import cloud.tianai.captcha.generator.common.model.dto.SliderImageCaptchaInfo; import cloud.tianai.captcha.generator.common.model.dto.SliderImageCaptchaInfo;
import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils;
import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; import cloud.tianai.captcha.resource.ImageCaptchaResourceManager;
import cloud.tianai.captcha.resource.ResourceStore; import cloud.tianai.captcha.resource.ResourceStore;
import cloud.tianai.captcha.resource.common.model.dto.Resource; import cloud.tianai.captcha.resource.common.model.dto.Resource;
@@ -24,8 +23,6 @@ import java.util.LinkedList;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import static cloud.tianai.captcha.generator.common.util.CaptchaImageUtils.*;
/** /**
* @Author: 天爱有情 * @Author: 天爱有情
* @Date 2020/5/29 8:06 * @Date 2020/5/29 8:06
@@ -43,12 +40,13 @@ public class StandardSliderImageCaptchaGenerator extends AbstractImageCaptchaGen
*/ */
public static final String DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH = "META-INF/cut-image/template"; public static final String DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH = "META-INF/cut-image/template";
protected final ImageCaptchaResourceManager imageCaptchaResourceManager;
public StandardSliderImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, public StandardSliderImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager,
boolean initDefaultResource) { boolean initDefaultResource) {
this.imageCaptchaResourceManager = imageCaptchaResourceManager; super(imageCaptchaResourceManager, initDefaultResource);
}
@Override
protected void doInit() {
if (initDefaultResource) { if (initDefaultResource) {
initDefaultResource(); initDefaultResource();
} }
@@ -140,11 +138,6 @@ public class StandardSliderImageCaptchaGenerator extends AbstractImageCaptchaGen
); );
} }
@Override
public ImageCaptchaResourceManager getImageResourceManager() {
return imageCaptchaResourceManager;
}
protected int randomObfuscateX(int sliderX, int slWidth, int bgWidth) { protected int randomObfuscateX(int sliderX, int slWidth, int bgWidth) {
if (bgWidth / 2 > (sliderX + (slWidth / 2))) { if (bgWidth / 2 > (sliderX + (slWidth / 2))) {
// 右边混淆 // 右边混淆