下面就为您介绍一下生成图片验证码的示例程序。
生成图片验证码示例程序
步骤1:导入验证码库
在Java中创建一个图片验证码需要用到非常多的API,用起来比较繁琐,因此我们可以使用一些第三方库来简化代码。这里我推荐使用Google的Guava库,该库提供了生成图片验证码的常用API,也可以方便的操作对象、字符串、集合等。
在Maven项目的pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>
步骤2:生成随机字符
Random random = new Random();
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++) {
char c = (char) (random.nextInt(26) + 65);
captcha.append(c);
}
这段代码使用Java的随机数生成器生成了一个长度为6的随机字符串,该字符串由英文字母(A-Z)组成。如果您需要生成数字、中文或其他字符的验证码,只需修改生成字符的范围即可。
步骤3:生成验证码图片
int width = 150;
int height = 50;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.BOLD, 32));
g.drawString(captcha.toString(), 25, 35);
g.dispose();
这段代码创建了一个150x50大小的空白图片,使用Java的2D绘图API将随机字符串绘制到图片上,然后返回该图片。
步骤4:将图片输出到HTTP响应中
response.setContentType("image/jpeg");
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "jpeg", out);
out.close();
这段代码设置HTTP响应的内容类型为image/jpeg,然后将生成的图片输出到HTTP响应流中。
示例1:结合Spring Boot使用
下面的代码演示了如何结合Spring Boot创建一个返回图片验证码的接口:
@RestController
public class CaptchaController {
@GetMapping("/captcha")
public void generateCaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException {
Random random = new Random();
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++) {
char c = (char) (random.nextInt(26) + 65);
captcha.append(c);
}
int width = 150;
int height = 50;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.BOLD, 32));
g.drawString(captcha.toString(), 25, 35);
g.dispose();
response.setContentType("image/jpeg");
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "jpeg", out);
out.close();
}
}
示例2:结合Servlet使用
下面的代码演示了如何结合Servlet创建一个返回图片验证码的接口:
public class CaptchaServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Random random = new Random();
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++) {
char c = (char) (random.nextInt(26) + 65);
captcha.append(c);
}
int width = 150;
int height = 50;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.BOLD, 32));
g.drawString(captcha.toString(), 25, 35);
g.dispose();
resp.setContentType("image/jpeg");
ServletOutputStream out = resp.getOutputStream();
ImageIO.write(image, "jpeg", out);
out.close();
}
}
建议将Servlet注册到某个servlet容器中,如Tomcat、Jetty等,然后通过访问 http://localhost:8080/captcha 获取验证码图片。
以上就是生成图片验证码的示例程序的完整攻略,希望对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java生成图片验证码示例程序 - Python技术站