提交 37468e3b 编写于 作者: dong.an's avatar dong.an

图形验证码

上级 788c2c41
流水线 #13092 已失败 于阶段
package com.pica.cloud.account.account.server.util.captcha;
import org.apache.commons.io.IOUtils;
import java.awt.*;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
......@@ -25,13 +29,29 @@ public class CaptchaContext {
public Font font;
static byte[][] fontDatas = new byte[4][];
static {
try {
InputStream fontStream = CaptchaGenerator.class.getClassLoader().getResourceAsStream("1.ttf");
fontDatas[0] = IOUtils.toByteArray(fontStream);
fontStream = CaptchaGenerator.class.getClassLoader().getResourceAsStream("2.ttf");
fontDatas[1] = IOUtils.toByteArray(fontStream);
fontStream = CaptchaGenerator.class.getClassLoader().getResourceAsStream("3.ttf");
fontDatas[2] = IOUtils.toByteArray(fontStream);
fontStream = CaptchaGenerator.class.getClassLoader().getResourceAsStream("4.ttf");
fontDatas[3] = IOUtils.toByteArray(fontStream);
} catch (IOException ex) {
}
}
public CaptchaContext(int width, int height, int fontSize, boolean showGrid) throws FontFormatException, IOException {
this.width = width;
this.height = height;
this.fontSize = fontSize;
this.showGrid = showGrid;
String name = "/" + (ThreadLocalRandom.current().nextInt(0, fontCount) + 1) + ".ttf";
this.font = Font.createFont(Font.TRUETYPE_FONT, CaptchaGenerator.class.getResourceAsStream(name));
int index = ThreadLocalRandom.current().nextInt(0, fontCount);
this.font = Font.createFont(Font.TRUETYPE_FONT, new ByteArrayInputStream(fontDatas[index]));
}
public int rndGridSize() {
......
package com.pica.cloud.account.account.server.util.captcha;
import org.apache.commons.io.IOUtils;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.io.InputStream;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
......@@ -16,6 +18,15 @@ import java.util.concurrent.ThreadLocalRandom;
public class CaptchaUtil {
final static int MAXSIZE = UUID.randomUUID().toString().replace("_", "").length();
static byte[] imageData;
static {
try {
InputStream imageStream = CaptchaUtil.class.getClassLoader().getResourceAsStream("1.png");
imageData = IOUtils.toByteArray(imageStream);
} catch (IOException ex) {
}
}
public static String generateUUIDText(int count) {
int pos = count < MAXSIZE ? count : MAXSIZE;
......@@ -45,8 +56,7 @@ public class CaptchaUtil {
}
//BufferedImage image = new BufferedImage(ctx.width, ctx.height, BufferedImage.TYPE_INT_RGB);
URL url = CaptchaUtil.class.getClassLoader().getResource("1.png");
BufferedImage image = ImageIO.read(url);
BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageData));
Graphics2D g2d = image.createGraphics();
//g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//g2d.setBackground(Color.WHITE);
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册