diff --git a/image/3.png b/image/3.png deleted file mode 100644 index f49d3b8..0000000 Binary files a/image/3.png and /dev/null differ diff --git a/image/6.png b/image/6.png index 5e5e5ac..39a9b8a 100644 Binary files a/image/6.png and b/image/6.png differ diff --git a/pom.xml b/pom.xml index ef46c0a..7fb2c16 100644 --- a/pom.xml +++ b/pom.xml @@ -4,10 +4,10 @@ 4.0.0 cloud.tianai.captcha tianai-captcha - 1.3.1.alpha + 1.3.1 tianai-captcha - 滑块验证码 + 行为验证码 https://gitee.com/tianai/tianai-captcha diff --git a/readme.md b/readme.md index da57e90..5b171c4 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -这是一个滑块验证码的实现 +这是一个行为验证码的实现 ## [在线体验](https://www.tianai.cloud) @@ -6,18 +6,27 @@ ![](image/1.png) ![](image/2.png) -![](image/3.png) ![](image/4.png) ![](image/5.png) ![](image/6.png) +![](image/7.png) +![](image/9.png) +![](image/10.png) +![](image/11.png) +![](image/12.png) -- 该滑块验证码实现了 普通图片和 **webp**图片两种格式 -- java获取滑块验证码例子 +## 简单介绍 +- tianai-captcha 目前支持的行为验证码类型 + - 滑块验证码 + - 旋转验证码 + - 滑动还原验证码 + - 文字点选验证码 + - 后面会陆续支持市面上更多好玩的验证码玩法... 敬请期待 + +- 该滑块验证码实现了 普通图片和 **webp**(拷贝github大神开源的webp图片生成代码)图片两种格式 ## 快速上手 -- - 如果是SpringBoot开发者可直接使用SpringBoot快速启动器[tianai-captcha-springboot-starter](https://gitee.com/tianai/tianai-captcha-springboot-starter) ### 1. 导入xml @@ -27,47 +36,59 @@ cloud.tianai.captcha tianai-captcha - 1.3.0.RELEASE + 1.3.1 ``` -### 2. 使用 `SliderCaptchaGenerator`生成器生成滑块验证码 +### 2. 使用 `ImageCaptchaGenerator`生成器生成验证码 ```java -import cloud.tianai.captcha.template.slider.generator.impl.StandardSliderImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.impl.StandardSliderCaptchaGenerator; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.impl.DefaultImageCaptchaResourceManager; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.StandardSliderCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; public class Test { public static void main(String[] args) throws InterruptedException { ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); - StandardSliderImageCaptchaGenerator sliderCaptchaGenerator = new StandardSliderImageCaptchaGenerator(imageCaptchaResourceManager, true); - // 生成滑块图片 - SliderCaptchaInfo slideImageInfo = sliderCaptchaGenerator.generateCaptchaImage(); - System.out.println(slideImageInfo); + MultiImageCaptchaGenerator imageCaptchaGenerator = new MultiImageCaptchaGenerator(imageCaptchaResourceManager, true); + /* + 生成滑块验证码图片, 可选项 + SLIDER (滑块验证码) + ROTATE (旋转验证码) + CONCAT (滑动还原验证码) + WORD_IMAGE_CLICK (文字点选验证码) + + 更多验证码支持 详见 cloud.tianai.captcha.common.constant.CaptchaTypeConstant + */ + ImageCaptchaInfo imageCaptchaInfo = imageCaptchaGenerator.generateCaptchaImage(CaptchaTypeConstant.SLIDER); + System.out.println(imageCaptchaInfo); // 负责计算一些数据存到缓存中,用于校验使用 - // SliderCaptchaValidator负责校验用户滑动滑块是否正确和生成滑块的一些校验数据; 比如滑块到凹槽的百分比值 - SliderCaptchaValidator sliderCaptchaValidator = new BasicCaptchaTrackValidator(); + // ImageCaptchaValidator负责校验用户滑动滑块是否正确和生成滑块的一些校验数据; 比如滑块到凹槽的百分比值 + ImageCaptchaValidator imageCaptchaValidator = new BasicCaptchaTrackValidator(); // 这个map数据应该存到缓存中,校验的时候需要用到该数据 - Map map = sliderCaptchaValidator.generateSliderCaptchaValidData(slideImageInfo); + Map map = imageCaptchaValidator.generateSliderCaptchaValidData(imageCaptchaInfo); } } ``` -### 3. 使用`SliderCaptchaValidator`校验器 验证 +### 3. 使用`ImageCaptchaGenerator`校验器 验证 ```java -import cloud.tianai.captcha.template.slider.generator.ImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.SliderCaptchaGenerator; +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.SliderCaptchaGenerator; +import cloud.tianai.captcha.validator.ImageCaptchaValidator; public class Test2 { public static void main(String[] args) { - ImageCaptchaGenerator sliderCaptchaValidator = new BasicCaptchaTrackValidator(); + ImageCaptchaValidator sliderCaptchaValidator = new BasicCaptchaTrackValidator(); // 用户传来的行为轨迹和进行校验 - // - sliderCaptchaTrack为前端传来的滑动轨迹数据 + // - imageCaptchaTrack为前端传来的滑动轨迹数据 // - map 为生成验证码时缓存的map数据 boolean check = sliderCaptchaValidator.valid(imageCaptchaTrack, map); // 如果只想校验用户是否滑到指定凹槽即可,也可以使用 @@ -80,14 +101,14 @@ public class Test2 { ## 整体架构设计 -> tianai-captcha 验证码整体分为 生成器(`SliderCaptchaGenerator`)、校验器(`SliderCaptchaValidato`r)、资源管理器(`SliderCaptchaResourceManager`) +> tianai-captcha 验证码整体分为 生成器(`ImageCaptchaGenerator`)、校验器(`ImageCaptchaValidator`)、资源管理器(`ImageCaptchaResourceManager`) > 其中生成器、校验器、资源管理器等都是基于接口模式实现 可插拔的,可以替换为自定义实现,灵活度高 -- 生成器(`SliderCaptchaGenerator`) +- 生成器(`ImageCaptchaGenerator`) - 主要负责生成滑块验证码所需的图片 -- 校验器(`SliderCaptchaValidator`) +- 校验器(`ImageCaptchaValidator`) - 主要负责校验用户滑动的行为轨迹是否合规 -- 资源管理器(`SliderCaptchaResourceManager`) +- 资源管理器(`ImageCaptchaResourceManager`) - 主要负责读取验证码背景图片和模板图片等 - 资源管理器细分为 资源存储(`ResourceStore`)、资源提供者(`ResourceProvider`) - 资源存储(`ResourceStore`) 负责存储背景图和模板图 @@ -95,17 +116,26 @@ public class Test2 { - 一般资源存储器中存储的是图片的url地址或者id之类, 资源提供者 就是负责将url或者别的id转换为真正的图片文件 ## 扩展 + ### 生成带有混淆滑块的图片 ```java +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; + public class Test { public static void main(String[] args) { // 资源管理器 - SliderCaptchaResourceManager imageCaptchaResourceManager = new DefaultSliderCaptchaResourceManager(); + ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); // 标准验证码生成器 - StandardSliderCaptchaGenerator sliderCaptchaGenerator = new StandardSliderCaptchaGenerator(imageCaptchaResourceManager, true); - // 生成滑块图片 - SliderCaptchaInfo slideImageInfo = sliderCaptchaGenerator.generateSlideImageInfo(GenerateParam.builder() + ImageCaptchaGenerator imageCaptchaGenerator = new MultiImageCaptchaGenerator(imageCaptchaResourceManager, true); + // 生成 具有混淆的 滑块验证码 (目前只有滑块验证码支持混淆滑块, 旋转验证,滑动还原,点选验证 均不支持混淆功能) + ImageCaptchaInfo imageCaptchaInfo = imageCaptchaGenerator.generateCaptchaImage(GenerateParam.builder() + .type(CaptchaTypeConstant.SLIDER) .sliderFormatName("jpeg") .backgroundFormatName("png") // 是否添加混淆滑块 @@ -118,18 +148,23 @@ public class Test { ### 生成webp格式的滑块图片 ```java +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; + public class Test { public static void main(String[] args) { // 资源管理器 - SliderCaptchaResourceManager imageCaptchaResourceManager = new DefaultSliderCaptchaResourceManager(); + ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); // 标准验证码生成器 - StandardSliderCaptchaGenerator sliderCaptchaGenerator = new StandardSliderCaptchaGenerator(imageCaptchaResourceManager, true); - // 生成滑块图片 + ImageCaptchaGenerator imageCaptchaGenerator = new MultiImageCaptchaGenerator(imageCaptchaResourceManager, true); + // 生成旋转验证码 图片类型为 webp SliderCaptchaInfo slideImageInfo = sliderCaptchaGenerator.generateSlideImageInfo(GenerateParam.builder() + .type(CaptchaTypeConstant.ROTATE) .sliderFormatName("webp") .backgroundFormatName("webp") - // 是否添加混淆滑块 - .obfuscate(false) .build()); } } @@ -140,8 +175,16 @@ public class Test { - 自定义图片资源大小为 590*360 格式为jpg ```java - public class Test { + 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.DefaultImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider; +import cloud.tianai.captcha.resource.impl.provider.URLResourceProvider; + +public class Test { public static void main(String[] args) { + ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); // 通过资源管理器或者资源存储器 ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore(); // 添加classpath目录下的 aa.jpg 图片 @@ -162,11 +205,17 @@ public class Test { - 模板大小为 110*360 格式为png,该图为固定格式,是一张纯透明图片 ```java - public class Test { +import cloud.tianai.captcha.generator.common.constant.SliderCaptchaConstant; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.ResourceStore; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; + +public class Test { public static void main(String[] args) { + ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); // 通过资源管理器或者资源存储器 ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore(); - // 添加模板.模板图片由三张图片组成 + // 添加滑块验证码模板.模板图片由三张图片组成 Map template1 = new HashMap<>(4); template1.put(SliderCaptchaConstant.TEMPLATE_ACTIVE_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, "/active.png")); template1.put(SliderCaptchaConstant.TEMPLATE_FIXED_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, "/fixed.png")); @@ -181,45 +230,61 @@ public class Test { - 清除内置的图片资源和模板资源 ```java +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; + public class Test { public static void main(String[] args) { //为方便快速上手 系统本身自带了一张图片和两套滑块模板,如果不想用系统自带的可以不让它加载系统自带的 // 第二个构造参数设置为false时将不加载默认的图片和模板 - SliderCaptchaGenerator sliderCaptchaGenerator = new StandardSliderCaptchaGenerator(imageCaptchaResourceManager, false); + ImageCaptchaGenerator imageCaptchaGenerator = new MultiImageCaptchaGenerator(imageCaptchaResourceManager, false); } } ``` -### 自定义 `SliderCaptchaValidator` 校验器 +### 自定义 `imageCaptchaValidator` 校验器 ```java // 该接口负责对用户滑动验证码后传回的数据进行校验,比如滑块是否滑到指定位置,滑块行为轨迹是否正常等等 // 该接口的默认实现有 -// SimpleSliderCaptchaValidator 校验用户是否滑到了指定缺口处 -// BasicCaptchaTrackValidator 是对 SimpleSliderCaptchaValidator增强 -// BasicCaptchaTrackValidator是对SimpleSliderCaptchaValidator的增强 对滑动轨迹进行了简单的验证 +// SimpleImageCaptchaValidator 校验用户是否滑到了指定缺口处 +// BasicCaptchaTrackValidator 是对 SimpleImageCaptchaValidator增强 +// BasicCaptchaTrackValidator是对SimpleImageCaptchaValidator的增强 对滑动轨迹进行了简单的验证 // 友情提示 因为BasicCaptchaTrackValidator 里面校验滑动轨迹的算法已经开源,有强制要求的建议重写该接口的方法,避免被破解 ``` ### 自定义 `ResourceProvider` 实现自定义文件读取策略, 比如 oss之类的 ```java - public class Test { + import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; + +public class Test { public static void main(String[] args) { // 实现了 ResourceProvider 后 - SliderCaptchaResourceManager imageCaptchaResourceManager = new DefaultSliderCaptchaResourceManager(); - StandardSliderCaptchaGenerator sliderCaptchaGenerator = new StandardSliderCaptchaGenerator(imageCaptchaResourceManager, true); + ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); + ImageCaptchaGenerator imageCaptchaGenerator = new MultiImageCaptchaGenerator(imageCaptchaResourceManager, true); // 注册 imageCaptchaResourceManager.registerResourceProvider(new CustomResourceProvider()); } } ``` -### 扩展,对`StandardSliderCaptchaGenerator`增加了缓存模块 +### 扩展,对`StandardImageCaptchaGenerator`增加了缓存模块 > 由于实时生成滑块图片可能会有一点性能影响,内部基于`StandardSliderCaptchaGenerator`进行了提前缓存生成好的图片,`CacheSliderCaptchaGenerator` 这只是基本的缓存逻辑,比较简单,用户可以定义一些更加有意思的扩展,用于突破性能瓶颈 ```java +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.impl.CacheImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; + public class Test { public static void main(String[] args) throws InterruptedException { // 使用 CacheSliderCaptchaGenerator 对滑块验证码进行缓存,使其提前生成滑块图片 @@ -227,17 +292,16 @@ public class Test { // 参数二: 默认提前缓存多少个 // 参数三: 出错后 等待xx时间再进行生成 // 参数四: 检查时间间隔 - SliderCaptchaResourceManager imageCaptchaResourceManager = new DefaultSliderCaptchaResourceManager(); - SliderCaptchaGenerator sliderCaptchaGenerator = new CacheSliderCaptchaGenerator(new StandardSliderCaptchaGenerator(imageCaptchaResourceManager, true), 10, 1000, 100); + ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); + ImageCaptchaGenerator imageCaptchaGenerator = new CacheImageCaptchaGenerator(new MultiImageCaptchaGenerator(imageCaptchaResourceManager, true), 10, 1000, 100); // 生成滑块图片 - SliderCaptchaInfo slideImageInfo = sliderCaptchaGenerator.generateSlideImageInfo(); + ImageCaptchaInfo slideImageInfo = imageCaptchaGenerator.generateCaptchaImage(CaptchaTypeConstant.SLIDER); // 获取背景图片的base64 String backgroundImage = slideImageInfo.getBackgroundImage(); // 获取滑块图片 - slideImageInfo.getSliderImage(); + String sliderImage = slideImageInfo.getSliderImage(); System.out.println(slideImageInfo); } } ``` - # qq群: 1021884609 \ No newline at end of file diff --git a/src/main/java/cloud/tianai/captcha/template/slider/common/constant/CaptchaTypeConstant.java b/src/main/java/cloud/tianai/captcha/common/constant/CaptchaTypeConstant.java similarity index 87% rename from src/main/java/cloud/tianai/captcha/template/slider/common/constant/CaptchaTypeConstant.java rename to src/main/java/cloud/tianai/captcha/common/constant/CaptchaTypeConstant.java index 1e585d0..b2f183a 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/common/constant/CaptchaTypeConstant.java +++ b/src/main/java/cloud/tianai/captcha/common/constant/CaptchaTypeConstant.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.common.constant; +package cloud.tianai.captcha.common.constant; /** * @Author: 天爱有情 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/common/exception/ImageCaptchaException.java b/src/main/java/cloud/tianai/captcha/common/exception/ImageCaptchaException.java similarity index 91% rename from src/main/java/cloud/tianai/captcha/template/slider/common/exception/ImageCaptchaException.java rename to src/main/java/cloud/tianai/captcha/common/exception/ImageCaptchaException.java index 229b42a..db7ab78 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/common/exception/ImageCaptchaException.java +++ b/src/main/java/cloud/tianai/captcha/common/exception/ImageCaptchaException.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.common.exception; +package cloud.tianai.captcha.common.exception; /** * @Author: 天爱有情 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/common/util/CaptchaUtils.java b/src/main/java/cloud/tianai/captcha/common/util/CaptchaUtils.java similarity index 81% rename from src/main/java/cloud/tianai/captcha/template/slider/common/util/CaptchaUtils.java rename to src/main/java/cloud/tianai/captcha/common/util/CaptchaUtils.java index d44bad2..5320f63 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/common/util/CaptchaUtils.java +++ b/src/main/java/cloud/tianai/captcha/common/util/CaptchaUtils.java @@ -1,6 +1,7 @@ -package cloud.tianai.captcha.template.slider.common.util; +package cloud.tianai.captcha.common.util; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; /** * @Author: 天爱有情 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/common/util/CollectionUtils.java b/src/main/java/cloud/tianai/captcha/common/util/CollectionUtils.java similarity index 99% rename from src/main/java/cloud/tianai/captcha/template/slider/common/util/CollectionUtils.java rename to src/main/java/cloud/tianai/captcha/common/util/CollectionUtils.java index 58feb38..f76b651 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/common/util/CollectionUtils.java +++ b/src/main/java/cloud/tianai/captcha/common/util/CollectionUtils.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package cloud.tianai.captcha.template.slider.common.util; +package cloud.tianai.captcha.common.util; import java.util.*; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/common/util/FontUtils.java b/src/main/java/cloud/tianai/captcha/common/util/FontUtils.java similarity index 92% rename from src/main/java/cloud/tianai/captcha/template/slider/common/util/FontUtils.java rename to src/main/java/cloud/tianai/captcha/common/util/FontUtils.java index 4e8db8e..14955c7 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/common/util/FontUtils.java +++ b/src/main/java/cloud/tianai/captcha/common/util/FontUtils.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.common.util; +package cloud.tianai.captcha.common.util; import lombok.SneakyThrows; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/common/util/NamedThreadFactory.java b/src/main/java/cloud/tianai/captcha/common/util/NamedThreadFactory.java similarity index 95% rename from src/main/java/cloud/tianai/captcha/template/slider/common/util/NamedThreadFactory.java rename to src/main/java/cloud/tianai/captcha/common/util/NamedThreadFactory.java index b5f3d8a..79829fe 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/common/util/NamedThreadFactory.java +++ b/src/main/java/cloud/tianai/captcha/common/util/NamedThreadFactory.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.common.util; +package cloud.tianai.captcha.common.util; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/common/util/ObjectUtils.java b/src/main/java/cloud/tianai/captcha/common/util/ObjectUtils.java similarity index 99% rename from src/main/java/cloud/tianai/captcha/template/slider/common/util/ObjectUtils.java rename to src/main/java/cloud/tianai/captcha/common/util/ObjectUtils.java index ed5b257..de57396 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/common/util/ObjectUtils.java +++ b/src/main/java/cloud/tianai/captcha/common/util/ObjectUtils.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package cloud.tianai.captcha.template.slider.common.util; +package cloud.tianai.captcha.common.util; import java.lang.reflect.Array; import java.util.Arrays; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/AbstractImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java similarity index 88% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/AbstractImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java index 4c91ade..f9732cc 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/AbstractImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java @@ -1,8 +1,8 @@ -package cloud.tianai.captcha.template.slider.generator; +package cloud.tianai.captcha.generator; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import lombok.Getter; import lombok.Setter; import lombok.SneakyThrows; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/ImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGenerator.java similarity index 72% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/ImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGenerator.java index b8ee7ea..64d7002 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/ImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGenerator.java @@ -1,9 +1,10 @@ -package cloud.tianai.captcha.template.slider.generator; +package cloud.tianai.captcha.generator; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; +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.ImageCaptchaInfo; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; /** * @Author: 天爱有情 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/constant/SliderCaptchaConstant.java b/src/main/java/cloud/tianai/captcha/generator/common/constant/SliderCaptchaConstant.java similarity index 85% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/common/constant/SliderCaptchaConstant.java rename to src/main/java/cloud/tianai/captcha/generator/common/constant/SliderCaptchaConstant.java index 35a6539..246a78c 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/constant/SliderCaptchaConstant.java +++ b/src/main/java/cloud/tianai/captcha/generator/common/constant/SliderCaptchaConstant.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.generator.common.constant; +package cloud.tianai.captcha.generator.common.constant; /** * @Author: 天爱有情 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/ClickImageCheckDefinition.java b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ClickImageCheckDefinition.java similarity index 86% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/ClickImageCheckDefinition.java rename to src/main/java/cloud/tianai/captcha/generator/common/model/dto/ClickImageCheckDefinition.java index f38e856..8679266 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/ClickImageCheckDefinition.java +++ b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ClickImageCheckDefinition.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.generator.common.model.dto; +package cloud.tianai.captcha.generator.common.model.dto; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/GenerateParam.java b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/GenerateParam.java similarity index 72% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/GenerateParam.java rename to src/main/java/cloud/tianai/captcha/generator/common/model/dto/GenerateParam.java index 8b1b4f0..de44c50 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/GenerateParam.java +++ b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/GenerateParam.java @@ -1,6 +1,7 @@ -package cloud.tianai.captcha.template.slider.generator.common.model.dto; +package cloud.tianai.captcha.generator.common.model.dto; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; import lombok.*; /** diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/ImageCaptchaInfo.java b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageCaptchaInfo.java similarity index 97% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/ImageCaptchaInfo.java rename to src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageCaptchaInfo.java index 80284a9..e2590a3 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/ImageCaptchaInfo.java +++ b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageCaptchaInfo.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.generator.common.model.dto; +package cloud.tianai.captcha.generator.common.model.dto; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/RotateImageCaptchaInfo.java b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/RotateImageCaptchaInfo.java similarity index 90% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/RotateImageCaptchaInfo.java rename to src/main/java/cloud/tianai/captcha/generator/common/model/dto/RotateImageCaptchaInfo.java index 8a8a9ad..a1f7abe 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/RotateImageCaptchaInfo.java +++ b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/RotateImageCaptchaInfo.java @@ -1,6 +1,7 @@ -package cloud.tianai.captcha.template.slider.generator.common.model.dto; +package cloud.tianai.captcha.generator.common.model.dto; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/SliderImageCaptchaInfo.java b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/SliderImageCaptchaInfo.java similarity index 89% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/SliderImageCaptchaInfo.java rename to src/main/java/cloud/tianai/captcha/generator/common/model/dto/SliderImageCaptchaInfo.java index 35021bf..8ece69f 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/model/dto/SliderImageCaptchaInfo.java +++ b/src/main/java/cloud/tianai/captcha/generator/common/model/dto/SliderImageCaptchaInfo.java @@ -1,6 +1,7 @@ -package cloud.tianai.captcha.template.slider.generator.common.model.dto; +package cloud.tianai.captcha.generator.common.model.dto; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/util/CaptchaImageUtils.java b/src/main/java/cloud/tianai/captcha/generator/common/util/CaptchaImageUtils.java similarity index 99% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/common/util/CaptchaImageUtils.java rename to src/main/java/cloud/tianai/captcha/generator/common/util/CaptchaImageUtils.java index 91d5ee8..b83dfad 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/common/util/CaptchaImageUtils.java +++ b/src/main/java/cloud/tianai/captcha/generator/common/util/CaptchaImageUtils.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.generator.common.util; +package cloud.tianai.captcha.generator.common.util; import lombok.SneakyThrows; import sun.font.FontDesignMetrics; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/AbstractClickImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/impl/AbstractClickImageCaptchaGenerator.java similarity index 86% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/impl/AbstractClickImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/impl/AbstractClickImageCaptchaGenerator.java index 3726096..ec0ae64 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/AbstractClickImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/impl/AbstractClickImageCaptchaGenerator.java @@ -1,11 +1,13 @@ -package cloud.tianai.captcha.template.slider.generator.impl; +package cloud.tianai.captcha.generator.impl; -import cloud.tianai.captcha.template.slider.generator.AbstractImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ClickImageCheckDefinition; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.common.util.CaptchaImageUtils; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +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.common.model.dto.ClickImageCheckDefinition; +import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import lombok.*; import java.awt.image.BufferedImage; @@ -14,7 +16,7 @@ import java.io.InputStream; import java.util.*; import java.util.concurrent.ThreadLocalRandom; -import static cloud.tianai.captcha.template.slider.generator.common.util.CaptchaImageUtils.wrapFile2BufferedImage; +import static cloud.tianai.captcha.generator.common.util.CaptchaImageUtils.wrapFile2BufferedImage; /** * @Author: 天爱有情 @@ -41,7 +43,7 @@ public abstract class AbstractClickImageCaptchaGenerator extends AbstractImageCa Resource resourceImage = getImageResourceManager().randomGetResource(param.getType()); InputStream resourceInputStream = getImageResourceManager().getResourceInputStream(resourceImage); inputStreams.add(resourceInputStream); - BufferedImage bgImage = wrapFile2BufferedImage(resourceInputStream); + BufferedImage bgImage = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream); List clickImageCheckDefinitionList = new ArrayList<>(interferenceCount); int allImages = interferenceCount + checkClickCount; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/CacheImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/impl/CacheImageCaptchaGenerator.java similarity index 93% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/impl/CacheImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/impl/CacheImageCaptchaGenerator.java index 804d398..060f420 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/CacheImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/impl/CacheImageCaptchaGenerator.java @@ -1,10 +1,11 @@ -package cloud.tianai.captcha.template.slider.generator.impl; +package cloud.tianai.captcha.generator.impl; -import cloud.tianai.captcha.template.slider.common.util.NamedThreadFactory; -import cloud.tianai.captcha.template.slider.generator.ImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.common.util.NamedThreadFactory; +import cloud.tianai.captcha.common.util.NamedThreadFactory; +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; import lombok.Getter; import lombok.Setter; import lombok.SneakyThrows; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/MultiImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/impl/MultiImageCaptchaGenerator.java similarity index 80% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/impl/MultiImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/impl/MultiImageCaptchaGenerator.java index 183f6a6..9d5be8a 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/MultiImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/impl/MultiImageCaptchaGenerator.java @@ -1,12 +1,12 @@ -package cloud.tianai.captcha.template.slider.generator.impl; +package cloud.tianai.captcha.generator.impl; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.common.util.ObjectUtils; -import cloud.tianai.captcha.template.slider.generator.AbstractImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.ImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.util.ObjectUtils; +import cloud.tianai.captcha.generator.AbstractImageCaptchaGenerator; +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardConcatImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/impl/StandardConcatImageCaptchaGenerator.java similarity index 79% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardConcatImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/impl/StandardConcatImageCaptchaGenerator.java index a263dde..6cbbad7 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardConcatImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/impl/StandardConcatImageCaptchaGenerator.java @@ -1,13 +1,13 @@ -package cloud.tianai.captcha.template.slider.generator.impl; +package cloud.tianai.captcha.generator.impl; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.generator.AbstractImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; -import cloud.tianai.captcha.template.slider.resource.impl.provider.ClassPathResourceProvider; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.AbstractImageCaptchaGenerator; +import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +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 java.awt.image.BufferedImage; @@ -17,8 +17,8 @@ import java.util.Collection; import java.util.LinkedList; import java.util.concurrent.ThreadLocalRandom; -import static cloud.tianai.captcha.template.slider.generator.common.util.CaptchaImageUtils.*; -import static cloud.tianai.captcha.template.slider.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH; +import static cloud.tianai.captcha.generator.common.util.CaptchaImageUtils.*; +import static cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH; /** * @Author: 天爱有情 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardRandomWordClickImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/impl/StandardRandomWordClickImageCaptchaGenerator.java similarity index 80% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardRandomWordClickImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/impl/StandardRandomWordClickImageCaptchaGenerator.java index c7ca520..6b03b8f 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardRandomWordClickImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/impl/StandardRandomWordClickImageCaptchaGenerator.java @@ -1,15 +1,19 @@ -package cloud.tianai.captcha.template.slider.generator.impl; +package cloud.tianai.captcha.generator.impl; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.common.util.FontUtils; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ClickImageCheckDefinition; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.common.util.CaptchaImageUtils; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; -import cloud.tianai.captcha.template.slider.resource.impl.provider.ClassPathResourceProvider; +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.util.FontUtils; +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.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.common.util.CaptchaImageUtils; +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.Data; import lombok.SneakyThrows; import sun.font.FontDesignMetrics; @@ -21,7 +25,7 @@ import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; -import static cloud.tianai.captcha.template.slider.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH; +import static cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH; /** * @Author: 天爱有情 @@ -73,7 +77,7 @@ public class StandardRandomWordClickImageCaptchaGenerator extends AbstractClickI public void initDefaultResource() { ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore(); // 添加一些系统的资源文件 - resourceStore.addResource(CaptchaTypeConstant.WORD_IMAGE_CLICK, new Resource(ClassPathResourceProvider.NAME, DEFAULT_SLIDER_IMAGE_RESOURCE_PATH.concat("/1.jpg"))); + resourceStore.addResource(CaptchaTypeConstant.WORD_IMAGE_CLICK, new Resource(ClassPathResourceProvider.NAME, StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH.concat("/1.jpg"))); } @Override diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardRotateImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/impl/StandardRotateImageCaptchaGenerator.java similarity index 58% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardRotateImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/impl/StandardRotateImageCaptchaGenerator.java index 3705457..8ac573d 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardRotateImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/impl/StandardRotateImageCaptchaGenerator.java @@ -1,15 +1,26 @@ -package cloud.tianai.captcha.template.slider.generator.impl; +package cloud.tianai.captcha.generator.impl; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.generator.AbstractImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.common.constant.SliderCaptchaConstant; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.RotateImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; -import cloud.tianai.captcha.template.slider.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.generator.common.util.CaptchaImageUtils; +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 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 java.awt.image.BufferedImage; @@ -21,9 +32,9 @@ import java.util.LinkedList; import java.util.Map; import java.util.concurrent.ThreadLocalRandom; -import static cloud.tianai.captcha.template.slider.generator.common.util.CaptchaImageUtils.*; -import static cloud.tianai.captcha.template.slider.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH; -import static cloud.tianai.captcha.template.slider.generator.impl.StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH; +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: 天爱有情 @@ -44,13 +55,13 @@ public class StandardRotateImageCaptchaGenerator extends AbstractImageCaptchaGen public void initDefaultResource() { ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore(); // 添加一些系统的资源文件 - resourceStore.addResource(CaptchaTypeConstant.ROTATE, new Resource(ClassPathResourceProvider.NAME, DEFAULT_SLIDER_IMAGE_RESOURCE_PATH.concat("/1.jpg"))); + resourceStore.addResource(CaptchaTypeConstant.ROTATE, new Resource(ClassPathResourceProvider.NAME, StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_RESOURCE_PATH.concat("/1.jpg"))); // 添加一些系统的 模板文件 Map template1 = new HashMap<>(4); - template1.put(SliderCaptchaConstant.TEMPLATE_ACTIVE_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH.concat("/3/active.png"))); - template1.put(SliderCaptchaConstant.TEMPLATE_FIXED_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH.concat("/3/fixed.png"))); - template1.put(SliderCaptchaConstant.TEMPLATE_MATRIX_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH.concat("/3/matrix.png"))); + template1.put(SliderCaptchaConstant.TEMPLATE_ACTIVE_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH.concat("/3/active.png"))); + template1.put(SliderCaptchaConstant.TEMPLATE_FIXED_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH.concat("/3/fixed.png"))); + template1.put(SliderCaptchaConstant.TEMPLATE_MATRIX_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, StandardSliderImageCaptchaGenerator.DEFAULT_SLIDER_IMAGE_TEMPLATE_PATH.concat("/3/matrix.png"))); resourceStore.addTemplate(CaptchaTypeConstant.ROTATE, template1); } @@ -66,34 +77,34 @@ public class StandardRotateImageCaptchaGenerator extends AbstractImageCaptchaGen Resource resourceImage = imageCaptchaResourceManager.randomGetResource(param.getType()); InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage); inputStreams.add(resourceInputStream); - BufferedImage cutBackground = wrapFile2BufferedImage(resourceInputStream); + BufferedImage cutBackground = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream); // 拷贝一份图片 - BufferedImage targetBackground = deepCopyBufferedImage(cutBackground); + BufferedImage targetBackground = CaptchaImageUtils.deepCopyBufferedImage(cutBackground); InputStream fixedTemplateInput = getTemplateFile(templateImages, SliderCaptchaConstant.TEMPLATE_FIXED_IMAGE_NAME); inputStreams.add(fixedTemplateInput); - BufferedImage fixedTemplate = wrapFile2BufferedImage(fixedTemplateInput); + BufferedImage fixedTemplate = CaptchaImageUtils.wrapFile2BufferedImage(fixedTemplateInput); InputStream activeTemplateInput = getTemplateFile(templateImages, SliderCaptchaConstant.TEMPLATE_ACTIVE_IMAGE_NAME); inputStreams.add(activeTemplateInput); - BufferedImage activeTemplate = wrapFile2BufferedImage(activeTemplateInput); + BufferedImage activeTemplate = CaptchaImageUtils.wrapFile2BufferedImage(activeTemplateInput); InputStream matrixTemplateInput = getTemplateFile(templateImages, SliderCaptchaConstant.TEMPLATE_MATRIX_IMAGE_NAME); inputStreams.add(matrixTemplateInput); - BufferedImage matrixTemplate = wrapFile2BufferedImage(matrixTemplateInput); + BufferedImage matrixTemplate = CaptchaImageUtils.wrapFile2BufferedImage(matrixTemplateInput); // 算出居中的x和y int x = targetBackground.getWidth() / 2 - fixedTemplate.getWidth() / 2; int y = targetBackground.getHeight() / 2 - fixedTemplate.getHeight() / 2; - overlayImage(targetBackground, fixedTemplate, x, y); + CaptchaImageUtils.overlayImage(targetBackground, fixedTemplate, x, y); // 抠图部分 - BufferedImage cutImage = cutImage(cutBackground, fixedTemplate, x, y); - overlayImage(cutImage, activeTemplate, 0, 0); + BufferedImage cutImage = CaptchaImageUtils.cutImage(cutBackground, fixedTemplate, x, y); + CaptchaImageUtils.overlayImage(cutImage, activeTemplate, 0, 0); // 随机旋转抠图部分 // 随机x, 转换为角度 int randomX = ThreadLocalRandom.current().nextInt(fixedTemplate.getWidth() + 10, targetBackground.getWidth() - 10); double degree = 360d - randomX / ((targetBackground.getWidth()) / 360d); - centerOverlayAndRotateImage(matrixTemplate, cutImage, degree); + CaptchaImageUtils.centerOverlayAndRotateImage(matrixTemplate, cutImage, degree); return wrapRotateCaptchaInfo(degree, randomX, targetBackground, matrixTemplate, param); } finally { // 使用完后关闭流 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardSliderImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/impl/StandardSliderImageCaptchaGenerator.java similarity index 79% rename from src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardSliderImageCaptchaGenerator.java rename to src/main/java/cloud/tianai/captcha/generator/impl/StandardSliderImageCaptchaGenerator.java index 613dcdc..e4e990d 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/generator/impl/StandardSliderImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/impl/StandardSliderImageCaptchaGenerator.java @@ -1,15 +1,17 @@ -package cloud.tianai.captcha.template.slider.generator.impl; +package cloud.tianai.captcha.generator.impl; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.generator.AbstractImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.common.constant.SliderCaptchaConstant; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.SliderImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; -import cloud.tianai.captcha.template.slider.resource.impl.provider.ClassPathResourceProvider; +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.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.SliderImageCaptchaInfo; +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.extern.slf4j.Slf4j; @@ -22,7 +24,7 @@ import java.util.LinkedList; import java.util.Map; import java.util.concurrent.ThreadLocalRandom; -import static cloud.tianai.captcha.template.slider.generator.common.util.CaptchaImageUtils.*; +import static cloud.tianai.captcha.generator.common.util.CaptchaImageUtils.*; /** * @Author: 天爱有情 @@ -65,22 +67,22 @@ public class StandardSliderImageCaptchaGenerator extends AbstractImageCaptchaGen Resource resourceImage = imageCaptchaResourceManager.randomGetResource(param.getType()); InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage); inputStreams.add(resourceInputStream); - BufferedImage cutBackground = wrapFile2BufferedImage(resourceInputStream); + BufferedImage cutBackground = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream); // 拷贝一份图片 - BufferedImage targetBackground = deepCopyBufferedImage(cutBackground); + BufferedImage targetBackground = CaptchaImageUtils.deepCopyBufferedImage(cutBackground); InputStream fixedTemplateInput = getTemplateFile(templateImages, SliderCaptchaConstant.TEMPLATE_FIXED_IMAGE_NAME); inputStreams.add(fixedTemplateInput); - BufferedImage fixedTemplate = wrapFile2BufferedImage(fixedTemplateInput); + BufferedImage fixedTemplate = CaptchaImageUtils.wrapFile2BufferedImage(fixedTemplateInput); InputStream activeTemplateInput = getTemplateFile(templateImages, SliderCaptchaConstant.TEMPLATE_ACTIVE_IMAGE_NAME); inputStreams.add(activeTemplateInput); - BufferedImage activeTemplate = wrapFile2BufferedImage(activeTemplateInput); + BufferedImage activeTemplate = CaptchaImageUtils.wrapFile2BufferedImage(activeTemplateInput); InputStream matrixTemplateInput = getTemplateFile(templateImages, SliderCaptchaConstant.TEMPLATE_MATRIX_IMAGE_NAME); inputStreams.add(matrixTemplateInput); - BufferedImage matrixTemplate = wrapFile2BufferedImage(matrixTemplateInput); + BufferedImage matrixTemplate = CaptchaImageUtils.wrapFile2BufferedImage(matrixTemplateInput); // BufferedImage cutTemplate = warpFile2BufferedImage(getTemplateFile(templateImages, CUT_IMAGE_NAME)); @@ -88,15 +90,15 @@ public class StandardSliderImageCaptchaGenerator extends AbstractImageCaptchaGen int randomX = ThreadLocalRandom.current().nextInt(fixedTemplate.getWidth() + 5, targetBackground.getWidth() - fixedTemplate.getWidth() - 10); int randomY = ThreadLocalRandom.current().nextInt(targetBackground.getHeight() - fixedTemplate.getHeight()); - overlayImage(targetBackground, fixedTemplate, randomX, randomY); + CaptchaImageUtils.overlayImage(targetBackground, fixedTemplate, randomX, randomY); if (obfuscate) { // 加入混淆滑块 int obfuscateX = randomObfuscateX(randomX, fixedTemplate.getWidth(), targetBackground.getWidth()); - overlayImage(targetBackground, fixedTemplate, obfuscateX, randomY); + CaptchaImageUtils.overlayImage(targetBackground, fixedTemplate, obfuscateX, randomY); } - BufferedImage cutImage = cutImage(cutBackground, fixedTemplate, randomX, randomY); - overlayImage(cutImage, activeTemplate, 0, 0); - overlayImage(matrixTemplate, cutImage, 0, randomY); + BufferedImage cutImage = CaptchaImageUtils.cutImage(cutBackground, fixedTemplate, randomX, randomY); + CaptchaImageUtils.overlayImage(cutImage, activeTemplate, 0, 0); + CaptchaImageUtils.overlayImage(matrixTemplate, cutImage, 0, randomY); return wrapSliderCaptchaInfo(randomX, randomY, targetBackground, matrixTemplate, param); } finally { // 使用完后关闭流 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/AbstractResourceProvider.java b/src/main/java/cloud/tianai/captcha/resource/AbstractResourceProvider.java similarity index 85% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/AbstractResourceProvider.java rename to src/main/java/cloud/tianai/captcha/resource/AbstractResourceProvider.java index 2058644..4999dda 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/AbstractResourceProvider.java +++ b/src/main/java/cloud/tianai/captcha/resource/AbstractResourceProvider.java @@ -1,6 +1,6 @@ -package cloud.tianai.captcha.template.slider.resource; +package cloud.tianai.captcha.resource; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import java.io.InputStream; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/ImageCaptchaResourceManager.java b/src/main/java/cloud/tianai/captcha/resource/ImageCaptchaResourceManager.java similarity index 91% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/ImageCaptchaResourceManager.java rename to src/main/java/cloud/tianai/captcha/resource/ImageCaptchaResourceManager.java index 638318d..f4625f7 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/ImageCaptchaResourceManager.java +++ b/src/main/java/cloud/tianai/captcha/resource/ImageCaptchaResourceManager.java @@ -1,6 +1,6 @@ -package cloud.tianai.captcha.template.slider.resource; +package cloud.tianai.captcha.resource; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import java.io.InputStream; import java.util.List; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/ResourceProvider.java b/src/main/java/cloud/tianai/captcha/resource/ResourceProvider.java similarity index 76% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/ResourceProvider.java rename to src/main/java/cloud/tianai/captcha/resource/ResourceProvider.java index 00674dd..2a0e8a6 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/ResourceProvider.java +++ b/src/main/java/cloud/tianai/captcha/resource/ResourceProvider.java @@ -1,6 +1,7 @@ -package cloud.tianai.captcha.template.slider.resource; +package cloud.tianai.captcha.resource; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import java.io.InputStream; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/ResourceStore.java b/src/main/java/cloud/tianai/captcha/resource/ResourceStore.java similarity index 92% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/ResourceStore.java rename to src/main/java/cloud/tianai/captcha/resource/ResourceStore.java index ec254fc..9727507 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/ResourceStore.java +++ b/src/main/java/cloud/tianai/captcha/resource/ResourceStore.java @@ -1,6 +1,7 @@ -package cloud.tianai.captcha.template.slider.resource; +package cloud.tianai.captcha.resource; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import java.util.List; import java.util.Map; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/common/model/dto/Resource.java b/src/main/java/cloud/tianai/captcha/resource/common/model/dto/Resource.java similarity index 69% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/common/model/dto/Resource.java rename to src/main/java/cloud/tianai/captcha/resource/common/model/dto/Resource.java index e2acfb6..13b9f97 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/common/model/dto/Resource.java +++ b/src/main/java/cloud/tianai/captcha/resource/common/model/dto/Resource.java @@ -1,6 +1,6 @@ -package cloud.tianai.captcha.template.slider.resource.common.model.dto; +package cloud.tianai.captcha.resource.common.model.dto; -import cloud.tianai.captcha.template.slider.resource.ResourceProvider; +import cloud.tianai.captcha.resource.ResourceProvider; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/DefaultImageCaptchaResourceManager.java b/src/main/java/cloud/tianai/captcha/resource/impl/DefaultImageCaptchaResourceManager.java similarity index 83% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/impl/DefaultImageCaptchaResourceManager.java rename to src/main/java/cloud/tianai/captcha/resource/impl/DefaultImageCaptchaResourceManager.java index 727e4a3..5691750 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/DefaultImageCaptchaResourceManager.java +++ b/src/main/java/cloud/tianai/captcha/resource/impl/DefaultImageCaptchaResourceManager.java @@ -1,12 +1,14 @@ -package cloud.tianai.captcha.template.slider.resource.impl; +package cloud.tianai.captcha.resource.impl; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.ResourceProvider; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; -import cloud.tianai.captcha.template.slider.resource.impl.provider.ClassPathResourceProvider; -import cloud.tianai.captcha.template.slider.resource.impl.provider.FileResourceProvider; -import cloud.tianai.captcha.template.slider.resource.impl.provider.URLResourceProvider; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.provider.URLResourceProvider; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.ResourceProvider; +import cloud.tianai.captcha.resource.ResourceStore; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider; +import cloud.tianai.captcha.resource.impl.provider.FileResourceProvider; +import cloud.tianai.captcha.resource.impl.provider.URLResourceProvider; import java.io.InputStream; import java.util.ArrayList; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/DefaultResourceStore.java b/src/main/java/cloud/tianai/captcha/resource/impl/DefaultResourceStore.java similarity index 90% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/impl/DefaultResourceStore.java rename to src/main/java/cloud/tianai/captcha/resource/impl/DefaultResourceStore.java index 1cc7eeb..1bb2854 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/DefaultResourceStore.java +++ b/src/main/java/cloud/tianai/captcha/resource/impl/DefaultResourceStore.java @@ -1,8 +1,10 @@ -package cloud.tianai.captcha.template.slider.resource.impl; +package cloud.tianai.captcha.resource.impl; -import cloud.tianai.captcha.template.slider.common.util.CollectionUtils; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.common.util.CollectionUtils; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.common.util.CollectionUtils; +import cloud.tianai.captcha.resource.ResourceStore; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import java.util.*; import java.util.concurrent.ThreadLocalRandom; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/ClassPathResourceProvider.java b/src/main/java/cloud/tianai/captcha/resource/impl/provider/ClassPathResourceProvider.java similarity index 75% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/ClassPathResourceProvider.java rename to src/main/java/cloud/tianai/captcha/resource/impl/provider/ClassPathResourceProvider.java index c7dc4fe..33fd4a9 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/ClassPathResourceProvider.java +++ b/src/main/java/cloud/tianai/captcha/resource/impl/provider/ClassPathResourceProvider.java @@ -1,7 +1,9 @@ -package cloud.tianai.captcha.template.slider.resource.impl.provider; +package cloud.tianai.captcha.resource.impl.provider; -import cloud.tianai.captcha.template.slider.resource.AbstractResourceProvider; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.AbstractResourceProvider; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.AbstractResourceProvider; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import java.io.InputStream; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/FileResourceProvider.java b/src/main/java/cloud/tianai/captcha/resource/impl/provider/FileResourceProvider.java similarity index 69% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/FileResourceProvider.java rename to src/main/java/cloud/tianai/captcha/resource/impl/provider/FileResourceProvider.java index ea398cb..ebaee67 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/FileResourceProvider.java +++ b/src/main/java/cloud/tianai/captcha/resource/impl/provider/FileResourceProvider.java @@ -1,7 +1,9 @@ -package cloud.tianai.captcha.template.slider.resource.impl.provider; +package cloud.tianai.captcha.resource.impl.provider; -import cloud.tianai.captcha.template.slider.resource.AbstractResourceProvider; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.AbstractResourceProvider; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.AbstractResourceProvider; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import lombok.SneakyThrows; import java.io.FileInputStream; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/URLResourceProvider.java b/src/main/java/cloud/tianai/captcha/resource/impl/provider/URLResourceProvider.java similarity index 72% rename from src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/URLResourceProvider.java rename to src/main/java/cloud/tianai/captcha/resource/impl/provider/URLResourceProvider.java index 13995e7..5543db7 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/resource/impl/provider/URLResourceProvider.java +++ b/src/main/java/cloud/tianai/captcha/resource/impl/provider/URLResourceProvider.java @@ -1,7 +1,8 @@ -package cloud.tianai.captcha.template.slider.resource.impl.provider; +package cloud.tianai.captcha.resource.impl.provider; -import cloud.tianai.captcha.template.slider.resource.AbstractResourceProvider; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.AbstractResourceProvider; +import cloud.tianai.captcha.resource.AbstractResourceProvider; +import cloud.tianai.captcha.resource.common.model.dto.Resource; import lombok.SneakyThrows; import java.io.InputStream; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/validator/ImageCaptchaValidator.java b/src/main/java/cloud/tianai/captcha/validator/ImageCaptchaValidator.java similarity index 82% rename from src/main/java/cloud/tianai/captcha/template/slider/validator/ImageCaptchaValidator.java rename to src/main/java/cloud/tianai/captcha/validator/ImageCaptchaValidator.java index 31d4e1e..2c98006 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/validator/ImageCaptchaValidator.java +++ b/src/main/java/cloud/tianai/captcha/validator/ImageCaptchaValidator.java @@ -1,7 +1,9 @@ -package cloud.tianai.captcha.template.slider.validator; +package cloud.tianai.captcha.validator; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.validator.common.model.dto.ImageCaptchaTrack; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; import java.util.Map; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/validator/common/constant/TrackTypeConstant.java b/src/main/java/cloud/tianai/captcha/validator/common/constant/TrackTypeConstant.java similarity index 81% rename from src/main/java/cloud/tianai/captcha/template/slider/validator/common/constant/TrackTypeConstant.java rename to src/main/java/cloud/tianai/captcha/validator/common/constant/TrackTypeConstant.java index 766ca17..09f9929 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/validator/common/constant/TrackTypeConstant.java +++ b/src/main/java/cloud/tianai/captcha/validator/common/constant/TrackTypeConstant.java @@ -1,4 +1,4 @@ -package cloud.tianai.captcha.template.slider.validator.common.constant; +package cloud.tianai.captcha.validator.common.constant; /** * @Author: 天爱有情 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/validator/common/model/dto/ImageCaptchaTrack.java b/src/main/java/cloud/tianai/captcha/validator/common/model/dto/ImageCaptchaTrack.java similarity index 83% rename from src/main/java/cloud/tianai/captcha/template/slider/validator/common/model/dto/ImageCaptchaTrack.java rename to src/main/java/cloud/tianai/captcha/validator/common/model/dto/ImageCaptchaTrack.java index 691597f..aad273d 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/validator/common/model/dto/ImageCaptchaTrack.java +++ b/src/main/java/cloud/tianai/captcha/validator/common/model/dto/ImageCaptchaTrack.java @@ -1,6 +1,7 @@ -package cloud.tianai.captcha.template.slider.validator.common.model.dto; +package cloud.tianai.captcha.validator.common.model.dto; -import cloud.tianai.captcha.template.slider.validator.common.constant.TrackTypeConstant; +import cloud.tianai.captcha.validator.common.constant.TrackTypeConstant; +import cloud.tianai.captcha.validator.common.constant.TrackTypeConstant; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/validator/impl/BasicCaptchaTrackValidator.java b/src/main/java/cloud/tianai/captcha/validator/impl/BasicCaptchaTrackValidator.java similarity index 90% rename from src/main/java/cloud/tianai/captcha/template/slider/validator/impl/BasicCaptchaTrackValidator.java rename to src/main/java/cloud/tianai/captcha/validator/impl/BasicCaptchaTrackValidator.java index a74f50e..73abb83 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/validator/impl/BasicCaptchaTrackValidator.java +++ b/src/main/java/cloud/tianai/captcha/validator/impl/BasicCaptchaTrackValidator.java @@ -1,9 +1,13 @@ -package cloud.tianai.captcha.template.slider.validator.impl; +package cloud.tianai.captcha.validator.impl; -import cloud.tianai.captcha.template.slider.common.util.CaptchaUtils; -import cloud.tianai.captcha.template.slider.common.util.CollectionUtils; -import cloud.tianai.captcha.template.slider.common.util.ObjectUtils; -import cloud.tianai.captcha.template.slider.validator.common.model.dto.ImageCaptchaTrack; +import cloud.tianai.captcha.common.util.CaptchaUtils; +import cloud.tianai.captcha.common.util.CollectionUtils; +import cloud.tianai.captcha.common.util.ObjectUtils; +import cloud.tianai.captcha.common.util.CaptchaUtils; +import cloud.tianai.captcha.common.util.CollectionUtils; +import cloud.tianai.captcha.common.util.ObjectUtils; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; import java.util.List; import java.util.Map; diff --git a/src/main/java/cloud/tianai/captcha/template/slider/validator/impl/SimpleImageCaptchaValidator.java b/src/main/java/cloud/tianai/captcha/validator/impl/SimpleImageCaptchaValidator.java similarity index 90% rename from src/main/java/cloud/tianai/captcha/template/slider/validator/impl/SimpleImageCaptchaValidator.java rename to src/main/java/cloud/tianai/captcha/validator/impl/SimpleImageCaptchaValidator.java index 468853b..05ef074 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/validator/impl/SimpleImageCaptchaValidator.java +++ b/src/main/java/cloud/tianai/captcha/validator/impl/SimpleImageCaptchaValidator.java @@ -1,14 +1,23 @@ -package cloud.tianai.captcha.template.slider.validator.impl; +package cloud.tianai.captcha.validator.impl; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.common.util.CaptchaUtils; -import cloud.tianai.captcha.template.slider.common.util.CollectionUtils; -import cloud.tianai.captcha.template.slider.common.util.ObjectUtils; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ClickImageCheckDefinition; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.validator.ImageCaptchaValidator; -import cloud.tianai.captcha.template.slider.validator.common.constant.TrackTypeConstant; -import cloud.tianai.captcha.template.slider.validator.common.model.dto.ImageCaptchaTrack; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.util.CaptchaUtils; +import cloud.tianai.captcha.common.util.CollectionUtils; +import cloud.tianai.captcha.common.util.ObjectUtils; +import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.util.CaptchaUtils; +import cloud.tianai.captcha.common.util.CollectionUtils; +import cloud.tianai.captcha.common.util.ObjectUtils; +import cloud.tianai.captcha.generator.common.model.dto.ClickImageCheckDefinition; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.validator.ImageCaptchaValidator; +import cloud.tianai.captcha.validator.common.constant.TrackTypeConstant; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; +import cloud.tianai.captcha.validator.ImageCaptchaValidator; +import cloud.tianai.captcha.validator.common.constant.TrackTypeConstant; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -206,7 +215,7 @@ public class SimpleImageCaptchaValidator implements ImageCaptchaValidator { return doValidClickCaptcha(imageCaptchaTrack, sliderCaptchaValidData, tolerant, type); } // 不支持的类型 - log.warn("校验验证码警告, 不支持的验证码类型:{}, 请手动扩展 cloud.tianai.captcha.template.slider.validator.impl.SimpleImageCaptchaValidator.doValid 进行校验扩展", type); + log.warn("校验验证码警告, 不支持的验证码类型:{}, 请手动扩展 cloud.tianai.captcha.validator.impl.SimpleImageCaptchaValidator.doValid 进行校验扩展", type); return false; } diff --git a/src/main/test/java/example/DrawCaptchaUtil.java b/src/main/test/java/example/DrawCaptchaUtil.java index 6798520..b7b6dc8 100644 --- a/src/main/test/java/example/DrawCaptchaUtil.java +++ b/src/main/test/java/example/DrawCaptchaUtil.java @@ -1,7 +1,7 @@ package example; -import cloud.tianai.captcha.template.slider.resource.common.model.dto.Resource; -import cloud.tianai.captcha.template.slider.resource.impl.provider.ClassPathResourceProvider; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.resource.impl.provider.ClassPathResourceProvider; import lombok.SneakyThrows; import sun.font.FontDesignMetrics; diff --git a/src/main/test/java/example/StandardConcatCaptchaGeneratorTest.java b/src/main/test/java/example/StandardConcatCaptchaGeneratorTest.java index 53cac4c..9e31760 100644 --- a/src/main/test/java/example/StandardConcatCaptchaGeneratorTest.java +++ b/src/main/test/java/example/StandardConcatCaptchaGeneratorTest.java @@ -1,15 +1,15 @@ package example; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.RotateImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.impl.CacheImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.impl.StandardConcatImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.impl.StandardRotateImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.impl.DefaultImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.impl.DefaultResourceStore; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.common.model.dto.RotateImageCaptchaInfo; +import cloud.tianai.captcha.generator.impl.CacheImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.StandardConcatImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.StandardRotateImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.ResourceStore; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultResourceStore; import java.util.concurrent.TimeUnit; diff --git a/src/main/test/java/example/StandardRotateCaptchaGeneratorTest.java b/src/main/test/java/example/StandardRotateCaptchaGeneratorTest.java index 3c77da5..ed58a90 100644 --- a/src/main/test/java/example/StandardRotateCaptchaGeneratorTest.java +++ b/src/main/test/java/example/StandardRotateCaptchaGeneratorTest.java @@ -1,14 +1,14 @@ package example; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.RotateImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.impl.CacheImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.generator.impl.StandardRotateImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.ResourceStore; -import cloud.tianai.captcha.template.slider.resource.impl.DefaultImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.impl.DefaultResourceStore; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.common.model.dto.RotateImageCaptchaInfo; +import cloud.tianai.captcha.generator.impl.CacheImageCaptchaGenerator; +import cloud.tianai.captcha.generator.impl.StandardRotateImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.ResourceStore; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultResourceStore; import java.util.concurrent.TimeUnit; diff --git a/src/main/test/java/example/StandardWordClickImageCaptchaGeneratorTest.java b/src/main/test/java/example/StandardWordClickImageCaptchaGeneratorTest.java index 3ee2b90..dc5bc7d 100644 --- a/src/main/test/java/example/StandardWordClickImageCaptchaGeneratorTest.java +++ b/src/main/test/java/example/StandardWordClickImageCaptchaGeneratorTest.java @@ -1,12 +1,12 @@ package example; -import cloud.tianai.captcha.template.slider.common.constant.CaptchaTypeConstant; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.GenerateParam; -import cloud.tianai.captcha.template.slider.generator.common.model.dto.ImageCaptchaInfo; -import cloud.tianai.captcha.template.slider.generator.impl.StandardRandomWordClickImageCaptchaGenerator; -import cloud.tianai.captcha.template.slider.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.resource.impl.DefaultImageCaptchaResourceManager; -import cloud.tianai.captcha.template.slider.validator.impl.BasicCaptchaTrackValidator; +import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; +import cloud.tianai.captcha.generator.common.model.dto.ImageCaptchaInfo; +import cloud.tianai.captcha.generator.impl.StandardRandomWordClickImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; +import cloud.tianai.captcha.validator.impl.BasicCaptchaTrackValidator; import java.util.Map;