写一段生成随机图片验证码的代码片段
时间: 2023-03-31 09:01:25 浏览: 70
以下是生成随机图片验证码的代码片段:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i, j, k;
char code[5];
srand(time(NULL));
for (i = ; i < 5; i++) {
k = rand() % 2;
if (k == ) {
code[i] = rand() % 26 + 'a';
} else {
code[i] = rand() % 10 + '';
}
}
printf("验证码为:");
for (j = ; j < 5; j++) {
printf("%c", code[j]);
}
printf("\n");
return ;
}
```
这段代码会生成一个由 5 个字符组成的随机验证码,其中包含小写字母和数字。每次运行程序都会生成一个不同的验证码。
相关问题
写一段随机生成图片的代码
好的,以下是一个简单的 Python 代码示例,用于随机生成颜色和大小不同的矩形:
```python
import numpy as np
from PIL import Image, ImageDraw
# 图像大小
width, height = 512, 512
# 生成随机颜色
def random_color():
return tuple(np.random.randint(0, 256, 3))
# 生成随机位置和大小的矩形
def random_rectangle():
x0, y0 = np.random.randint(0, width), np.random.randint(0, height)
x1, y1 = np.random.randint(0, width), np.random.randint(0, height)
return (x0, y0, x1, y1)
# 创建图像
img = Image.new('RGB', (width, height), color='white')
draw = ImageDraw.Draw(img)
# 画 100 个随机矩形
for i in range(100):
rect = random_rectangle()
color = random_color()
draw.rectangle(rect, fill=color)
# 显示图像
img.show()
```
这段代码使用了 NumPy 和 PIL 库,可以生成一个 512x512 大小的白色图像,并在上面画出 100 个随机颜色和大小的矩形。你可以根据自己的需求修改图像大小和生成的矩形数量。
用java写一段生成动态验证码的代码
以下是用 Java 生成动态验证码的示例代码:
```java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CaptchaUtil {
private static final int WIDTH = 120;
private static final int HEIGHT = 40;
private static final int CODE_LENGTH = 4;
private static final int LINE_COUNT = 20;
private static final int FONT_SIZE = 20;
public static void generateCaptcha(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
// 生成验证码
String captchaCode = generateCode(CODE_LENGTH);
session.setAttribute("captchaCode", captchaCode);
// 生成图片
BufferedImage captchaImage = generateImage(captchaCode);
// 输出图片到客户端
response.setContentType("image/png");
try (ServletOutputStream out = response.getOutputStream()) {
ImageIO.write(captchaImage, "png", out);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private static String generateCode(int length) {
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
return sb.toString();
}
private static BufferedImage generateImage(String captchaCode) {
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
// 填充背景色
g.setColor(Color.WHITE);
g.fillRect(0, 0, WIDTH, HEIGHT);
// 画干扰线
Random random = new Random();
for (int i = 0; i < LINE_COUNT; i++) {
g.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));
g.drawLine(random.nextInt(WIDTH), random.nextInt(HEIGHT), random.nextInt(WIDTH), random.nextInt(HEIGHT));
}
// 写验证码
g.setFont(new Font("Arial", Font.PLAIN, FONT_SIZE));
for (int i = 0; i < captchaCode.length(); i++) {
g.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));
g.drawString("" + captchaCode.charAt(i), 25 * i + 10, HEIGHT / 2 + 5);
}
g.dispose();
return image;
}
}
```
这段代码会生成一个包含随机验证码的 PNG 图片,并输出到客户端。在生成图片的过程中,会生成一些干扰线以及随机颜色的验证码字符。通过 `session` 存储生成的验证码,在客户端提交表单时验证验证码是否正确即可。