Captcha.setBackground为null时背景透明

This commit is contained in:
Looly 2024-04-24 14:51:29 +08:00
parent 060296167b
commit 483abdb76f

View File

@ -14,10 +14,10 @@ package org.dromara.hutool.swing.captcha;
import com.madgag.gif.fmsware.AnimatedGifEncoder; import com.madgag.gif.fmsware.AnimatedGifEncoder;
import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;
import org.dromara.hutool.swing.captcha.generator.CodeGenerator; import org.dromara.hutool.swing.captcha.generator.CodeGenerator;
import org.dromara.hutool.swing.captcha.generator.RandomGenerator; import org.dromara.hutool.swing.captcha.generator.RandomGenerator;
import org.dromara.hutool.swing.img.GraphicsUtil;
import java.awt.AlphaComposite; import java.awt.AlphaComposite;
import java.awt.Color; import java.awt.Color;
@ -193,13 +193,10 @@ public class GifCaptcha extends AbstractCaptcha {
* @return BufferedImage * @return BufferedImage
*/ */
private BufferedImage graphicsImage(final char[] chars, final Color[] fontColor, final char[] words, final int flag) { private BufferedImage graphicsImage(final char[] chars, final Color[] fontColor, final char[] words, final int flag) {
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); final BufferedImage image = new BufferedImage(width, height, (null == this.background) ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_INT_RGB);
//或得图形上下文 //利用指定颜色填充背景
final Graphics2D g2d = image.createGraphics(); final Graphics2D g2d = GraphicsUtil.createGraphics(image, this.background);
try{ try{
//利用指定颜色填充背景
g2d.setColor(ObjUtil.defaultIfNull(this.background, Color.WHITE));
g2d.fillRect(0, 0, width, height);
AlphaComposite ac; AlphaComposite ac;
// 字符的y坐标 // 字符的y坐标
final float y = (height >> 1) + (font.getSize() >> 1); final float y = (height >> 1) + (font.getSize() >> 1);