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