mirror of
https://github.com/dromara/tianai-captcha.git
synced 2026-05-07 06:04:34 +08:00
添加深度拷贝图片方法,简单优化性能
This commit is contained in:
@@ -6,7 +6,9 @@ import javax.imageio.ImageIO;
|
||||
import java.awt.*;
|
||||
import java.awt.geom.Area;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.ColorModel;
|
||||
import java.awt.image.PixelGrabber;
|
||||
import java.awt.image.WritableRaster;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URL;
|
||||
@@ -149,7 +151,8 @@ public class SliderCaptchaTemplate {
|
||||
Map<String, URL> templateImages = getRandomTemplateImages();
|
||||
|
||||
BufferedImage cutBackground = warpFile2BufferedImage(resourceImage);
|
||||
BufferedImage targetBackground = warpFile2BufferedImage(resourceImage);
|
||||
// 拷贝一份图片
|
||||
BufferedImage targetBackground = deepCopyBufferedImage(cutBackground);
|
||||
|
||||
BufferedImage fixedTemplate = warpFile2BufferedImage(getTemplateFile(templateImages, FIXED_IMAGE_NAME));
|
||||
BufferedImage activeTemplate = warpFile2BufferedImage(getTemplateFile(templateImages, ACTIVE_IMAGE_NAME));
|
||||
@@ -248,6 +251,19 @@ public class SliderCaptchaTemplate {
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 深度拷贝图片
|
||||
* @param bi 原图片
|
||||
* @return BufferedImage
|
||||
*/
|
||||
public static BufferedImage deepCopyBufferedImage(BufferedImage bi) {
|
||||
ColorModel cm = bi.getColorModel();
|
||||
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
|
||||
WritableRaster raster = bi.copyData(bi.getRaster().createCompatibleWritableRaster());
|
||||
return new BufferedImage(cm, raster, isAlphaPremultiplied, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将Image图像中的透明/不透明部分转换为Shape图形
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user