mirror of
https://github.com/dromara/tianai-captcha.git
synced 2026-05-22 17:42:41 +08:00
U 优化
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package cloud.tianai.captcha.generator;
|
package cloud.tianai.captcha.generator;
|
||||||
|
|
||||||
|
import cloud.tianai.captcha.common.exception.ImageCaptchaException;
|
||||||
|
import cloud.tianai.captcha.common.util.CollectionUtils;
|
||||||
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.impl.transform.Base64ImageTransform;
|
import cloud.tianai.captcha.generator.impl.transform.Base64ImageTransform;
|
||||||
@@ -91,6 +93,24 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener
|
|||||||
return doGenerateCaptchaImage(param);
|
return doGenerateCaptchaImage(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected Map<String, Resource> requiredRandomGetTemplate(String type) {
|
||||||
|
Map<String, Resource> templateMap = imageCaptchaResourceManager.randomGetTemplate(type);
|
||||||
|
if (CollectionUtils.isEmpty(templateMap)) {
|
||||||
|
throw new ImageCaptchaException("随机获取模板资源失败, 获取到的资源为空, type=" + type);
|
||||||
|
}
|
||||||
|
return templateMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Resource requiredRandomGetResource(String type) {
|
||||||
|
Resource resource = imageCaptchaResourceManager.randomGetResource(type);
|
||||||
|
if (resource == null) {
|
||||||
|
throw new ImageCaptchaException("随机获取资源失败, 获取到的资源为空, type=" + type);
|
||||||
|
}
|
||||||
|
return resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected InputStream getTemplateFile(Map<String, Resource> templateImages, String imageName) {
|
protected InputStream getTemplateFile(Map<String, Resource> templateImages, String imageName) {
|
||||||
Resource resource = templateImages.get(imageName);
|
Resource resource = templateImages.get(imageName);
|
||||||
if (resource == null) {
|
if (resource == null) {
|
||||||
|
|||||||
@@ -169,18 +169,18 @@ public class CaptchaImageUtils {
|
|||||||
/**
|
/**
|
||||||
* 旋转图片
|
* 旋转图片
|
||||||
*
|
*
|
||||||
* @param bufferedimage
|
* @param bufferedImage
|
||||||
* @param degree
|
* @param degree
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static BufferedImage rotateImage(final BufferedImage bufferedimage,
|
public static BufferedImage rotateImage(final BufferedImage bufferedImage,
|
||||||
final double degree) {
|
final double degree) {
|
||||||
// 得到图片宽度。
|
// 得到图片宽度。
|
||||||
int w = bufferedimage.getWidth();
|
int w = bufferedImage.getWidth();
|
||||||
// 得到图片高度。
|
// 得到图片高度。
|
||||||
int h = bufferedimage.getHeight();
|
int h = bufferedImage.getHeight();
|
||||||
// 得到图片透明度。
|
// 得到图片透明度。
|
||||||
int type = bufferedimage.getColorModel().getTransparency();
|
int type = bufferedImage.getColorModel().getTransparency();
|
||||||
BufferedImage img;// 空的图片。
|
BufferedImage img;// 空的图片。
|
||||||
Graphics2D graphics2d;// 空的画笔。
|
Graphics2D graphics2d;// 空的画笔。
|
||||||
(graphics2d = (img = new BufferedImage(w, h, type))
|
(graphics2d = (img = new BufferedImage(w, h, type))
|
||||||
@@ -190,7 +190,7 @@ public class CaptchaImageUtils {
|
|||||||
// 旋转,degree是整型,度数,比如垂直90度。
|
// 旋转,degree是整型,度数,比如垂直90度。
|
||||||
graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);
|
graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);
|
||||||
// 从bufferedimagecopy图片至img,0,0是img的坐标。
|
// 从bufferedimagecopy图片至img,0,0是img的坐标。
|
||||||
graphics2d.drawImage(bufferedimage, 0, 0, null);
|
graphics2d.drawImage(bufferedImage, 0, 0, null);
|
||||||
graphics2d.dispose();
|
graphics2d.dispose();
|
||||||
// 返回复制好的图片,原图片依然没有变,没有旋转,下次还可以使用。
|
// 返回复制好的图片,原图片依然没有变,没有旋转,下次还可以使用。
|
||||||
return img;
|
return img;
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ public abstract class AbstractClickImageCaptchaGenerator extends AbstractImageCa
|
|||||||
// 文字点选验证码不需要模板 只需要背景图
|
// 文字点选验证码不需要模板 只需要背景图
|
||||||
Collection<InputStream> inputStreams = new LinkedList<>();
|
Collection<InputStream> inputStreams = new LinkedList<>();
|
||||||
try {
|
try {
|
||||||
Resource resourceImage = getImageResourceManager().randomGetResource(param.getType());
|
Resource resourceImage = requiredRandomGetResource(param.getType());
|
||||||
InputStream resourceInputStream = getImageResourceManager().getResourceInputStream(resourceImage);
|
InputStream resourceInputStream = getImageResourceManager().getResourceInputStream(resourceImage);
|
||||||
inputStreams.add(resourceInputStream);
|
inputStreams.add(resourceInputStream);
|
||||||
BufferedImage bgImage = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream);
|
BufferedImage bgImage = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream);
|
||||||
|
|||||||
+1
-1
@@ -55,7 +55,7 @@ public class StandardConcatImageCaptchaGenerator extends AbstractImageCaptchaGen
|
|||||||
// 拼接验证码不需要模板 只需要背景图
|
// 拼接验证码不需要模板 只需要背景图
|
||||||
Collection<InputStream> inputStreams = new LinkedList<>();
|
Collection<InputStream> inputStreams = new LinkedList<>();
|
||||||
try {
|
try {
|
||||||
Resource resourceImage = imageCaptchaResourceManager.randomGetResource(param.getType());
|
Resource resourceImage = requiredRandomGetResource(param.getType());
|
||||||
InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage);
|
InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage);
|
||||||
inputStreams.add(resourceInputStream);
|
inputStreams.add(resourceInputStream);
|
||||||
BufferedImage bgImage = wrapFile2BufferedImage(resourceInputStream);
|
BufferedImage bgImage = wrapFile2BufferedImage(resourceInputStream);
|
||||||
|
|||||||
+2
-5
@@ -62,13 +62,10 @@ public class StandardRotateImageCaptchaGenerator extends AbstractImageCaptchaGen
|
|||||||
@Override
|
@Override
|
||||||
public ImageCaptchaInfo doGenerateCaptchaImage(GenerateParam param) {
|
public ImageCaptchaInfo doGenerateCaptchaImage(GenerateParam param) {
|
||||||
// 旋转验证码没有混淆
|
// 旋转验证码没有混淆
|
||||||
Map<String, Resource> templateImages = imageCaptchaResourceManager.randomGetTemplate(param.getType());
|
Map<String, Resource> templateImages = requiredRandomGetTemplate(param.getType());
|
||||||
if (templateImages == null || templateImages.isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Collection<InputStream> inputStreams = new LinkedList<>();
|
Collection<InputStream> inputStreams = new LinkedList<>();
|
||||||
try {
|
try {
|
||||||
Resource resourceImage = imageCaptchaResourceManager.randomGetResource(param.getType());
|
Resource resourceImage = requiredRandomGetResource(param.getType());
|
||||||
InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage);
|
InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage);
|
||||||
inputStreams.add(resourceInputStream);
|
inputStreams.add(resourceInputStream);
|
||||||
BufferedImage cutBackground = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream);
|
BufferedImage cutBackground = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream);
|
||||||
|
|||||||
+2
-5
@@ -61,13 +61,10 @@ public class StandardSliderImageCaptchaGenerator extends AbstractImageCaptchaGen
|
|||||||
@Override
|
@Override
|
||||||
public ImageCaptchaInfo doGenerateCaptchaImage(GenerateParam param) {
|
public ImageCaptchaInfo doGenerateCaptchaImage(GenerateParam param) {
|
||||||
Boolean obfuscate = param.getObfuscate();
|
Boolean obfuscate = param.getObfuscate();
|
||||||
Map<String, Resource> templateImages = imageCaptchaResourceManager.randomGetTemplate(param.getType());
|
Map<String, Resource> templateImages = requiredRandomGetTemplate(param.getType());
|
||||||
if (templateImages == null || templateImages.isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Collection<InputStream> inputStreams = new LinkedList<>();
|
Collection<InputStream> inputStreams = new LinkedList<>();
|
||||||
try {
|
try {
|
||||||
Resource resourceImage = imageCaptchaResourceManager.randomGetResource(param.getType());
|
Resource resourceImage = requiredRandomGetResource(param.getType());
|
||||||
InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage);
|
InputStream resourceInputStream = imageCaptchaResourceManager.getResourceInputStream(resourceImage);
|
||||||
inputStreams.add(resourceInputStream);
|
inputStreams.add(resourceInputStream);
|
||||||
BufferedImage cutBackground = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream);
|
BufferedImage cutBackground = CaptchaImageUtils.wrapFile2BufferedImage(resourceInputStream);
|
||||||
|
|||||||
Reference in New Issue
Block a user