mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
修复Graphics2D的资源没释放问题
This commit is contained in:
parent
3a70158d96
commit
03a92830a6
@ -2,7 +2,7 @@
|
|||||||
# 🚀Changelog
|
# 🚀Changelog
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
# 5.8.27(2024-03-12)
|
# 5.8.27(2024-03-15)
|
||||||
|
|
||||||
### 🐣新特性
|
### 🐣新特性
|
||||||
* 【extra 】 FreemarkerEngine修改默认版本参数
|
* 【extra 】 FreemarkerEngine修改默认版本参数
|
||||||
@ -16,6 +16,7 @@
|
|||||||
* 【json 】 修复JSONUtil序列化和反序列化预期的结果不一致问题(pr#3507@Github)
|
* 【json 】 修复JSONUtil序列化和反序列化预期的结果不一致问题(pr#3507@Github)
|
||||||
* 【http 】 修复CVE-2022-22885,HttpGlobalConfig可选关闭信任host(issue#2042@Github)
|
* 【http 】 修复CVE-2022-22885,HttpGlobalConfig可选关闭信任host(issue#2042@Github)
|
||||||
* 【core 】 修复DateUtil.betweenYear闰年2月问题(issue#I97U3J@Gitee)
|
* 【core 】 修复DateUtil.betweenYear闰年2月问题(issue#I97U3J@Gitee)
|
||||||
|
* 【captcha】 修复Graphics2D的资源没释放问题(issue#I98PYN@Gitee)
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
# 5.8.26(2024-02-10)
|
# 5.8.26(2024-02-10)
|
||||||
|
@ -71,11 +71,15 @@ public class CircleCaptcha extends AbstractCaptcha {
|
|||||||
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
||||||
final Graphics2D g = ImgUtil.createGraphics(image, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
final Graphics2D g = ImgUtil.createGraphics(image, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
||||||
|
|
||||||
|
try{
|
||||||
// 随机画干扰圈圈
|
// 随机画干扰圈圈
|
||||||
drawInterfere(g);
|
drawInterfere(g);
|
||||||
|
|
||||||
// 画字符串
|
// 画字符串
|
||||||
drawString(g, code);
|
drawString(g, code);
|
||||||
|
} finally {
|
||||||
|
g.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
@ -171,6 +171,7 @@ public class GifCaptcha extends AbstractCaptcha {
|
|||||||
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
||||||
//或得图形上下文
|
//或得图形上下文
|
||||||
Graphics2D g2d = image.createGraphics();
|
Graphics2D g2d = image.createGraphics();
|
||||||
|
try{
|
||||||
//利用指定颜色填充背景
|
//利用指定颜色填充背景
|
||||||
g2d.setColor(ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
g2d.setColor(ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
||||||
g2d.fillRect(0, 0, width, height);
|
g2d.fillRect(0, 0, width, height);
|
||||||
@ -196,7 +197,9 @@ public class GifCaptcha extends AbstractCaptcha {
|
|||||||
);//绘制椭圆边框
|
);//绘制椭圆边框
|
||||||
g2d.drawString(words[i] + "", x + (font.getSize() + m) * i, y);
|
g2d.drawString(words[i] + "", x + (font.getSize() + m) * i, y);
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
g2d.dispose();
|
g2d.dispose();
|
||||||
|
}
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,11 +62,15 @@ public class LineCaptcha extends AbstractCaptcha {
|
|||||||
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
||||||
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
||||||
|
|
||||||
|
try {
|
||||||
// 干扰线
|
// 干扰线
|
||||||
drawInterfere(g);
|
drawInterfere(g);
|
||||||
|
|
||||||
// 字符串
|
// 字符串
|
||||||
drawString(g, code);
|
drawString(g, code);
|
||||||
|
} finally {
|
||||||
|
g.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@ public class ShearCaptcha extends AbstractCaptcha {
|
|||||||
final BufferedImage image = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_RGB);
|
final BufferedImage image = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_RGB);
|
||||||
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
final Graphics2D g = GraphicsUtil.createGraphics(image, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
||||||
|
|
||||||
|
try{
|
||||||
// 画字符串
|
// 画字符串
|
||||||
drawString(g, code);
|
drawString(g, code);
|
||||||
|
|
||||||
@ -80,6 +81,9 @@ public class ShearCaptcha extends AbstractCaptcha {
|
|||||||
shear(g, this.width, this.height, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
shear(g, this.width, this.height, ObjectUtil.defaultIfNull(this.background, Color.WHITE));
|
||||||
// 画干扰线
|
// 画干扰线
|
||||||
drawInterfere(g, 0, RandomUtil.randomInt(this.height) + 1, this.width, RandomUtil.randomInt(this.height) + 1, this.interfereCount, ImgUtil.randomColor());
|
drawInterfere(g, 0, RandomUtil.randomInt(this.height) + 1, this.width, RandomUtil.randomInt(this.height) + 1, this.interfereCount, ImgUtil.randomColor());
|
||||||
|
} finally {
|
||||||
|
g.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
@ -1338,8 +1338,11 @@ public class ImgUtil {
|
|||||||
final BufferedImage bimage = new BufferedImage(
|
final BufferedImage bimage = new BufferedImage(
|
||||||
img.getWidth(null), img.getHeight(null), imageType);
|
img.getWidth(null), img.getHeight(null), imageType);
|
||||||
final Graphics2D bGr = GraphicsUtil.createGraphics(bimage, backgroundColor);
|
final Graphics2D bGr = GraphicsUtil.createGraphics(bimage, backgroundColor);
|
||||||
|
try{
|
||||||
bGr.drawImage(img, 0, 0, null);
|
bGr.drawImage(img, 0, 0, null);
|
||||||
|
} finally {
|
||||||
bGr.dispose();
|
bGr.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
return bimage;
|
return bimage;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user