添加深度拷贝图片方法,简单优化性能

This commit is contained in:
liushaofeng
2020-07-13 11:38:02 +08:00
parent c3ea78efa1
commit 0e647a5cbc
@@ -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图形
*