# captcha-cpp **Repository Path**: chacebai/captcha-cpp ## Basic Information - **Project Name**: captcha-cpp - **Description**: 纯C++实现的二维码生成与验证码图片生成工具集,支持中文,跨平台,无外部依赖 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-23 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # captcha-cpp 纯 C++ 实现的二维码生成与验证码图片生成工具集,无平台依赖,支持 Linux / Windows 跨平台编译。 ## 文件说明 ### 第三方单头文件库 | 文件 | 说明 | 来源 | |------|------|------| | `jo_qr.h` | QR 二维码生成器(Version 5, 37x37) | [jonolick.com](https://www.jonolick.com/code.html) | | `jo_jpeg.cpp` | JPEG 编码器(单文件,无内存分配) | [jonolick.com](https://www.jonolick.com/code.html) | | `stb_truetype.h` | TrueType/OpenType 字体渲染器 | [github.com/nothings/stb](https://github.com/nothings/stb) | ### 应用程序 | 文件 | 说明 | |------|------| | `qr_to_jpeg.cpp` | 将文本编码为 QR 二维码并输出为 JPEG 图片 | | `captcha_abcd.cpp` | 验证码生成(5x7 点阵字体,仅 ABCD) | | `captcha_text.cpp` | 验证码生成(5x7 点阵字体,支持 A-Z, 0-9) | | `captcha_truetype.cpp` | 验证码生成(TTF 字体渲染,支持中文/英文/数字,自动换行) | ## 编译 ```bash # Linux g++ -O2 -o qr_to_jpeg qr_to_jpeg.cpp -lm g++ -O2 -o captcha_abcd captcha_abcd.cpp -lm g++ -O2 -o captcha_text captcha_text.cpp -lm g++ -O2 -o captcha_truetype captcha_truetype.cpp -lm # Windows (MinGW) g++ -O2 -o qr_to_jpeg qr_to_jpeg.cpp -lm g++ -O2 -o captcha_abcd captcha_abcd.cpp -lm g++ -O2 -o captcha_text captcha_text.cpp -lm g++ -O2 -o captcha_truetype captcha_truetype.cpp -lm ``` ## 使用方法 ### qr_to_jpeg — QR 二维码生成 ```bash # 默认编码网址 ./qr_to_jpeg # 自定义文本和输出文件 ./qr_to_jpeg "https://example.com" output.jpg ``` ### captcha_abcd — 简单验证码(ABCD) ```bash ./captcha_abcd # 输出 captcha_abcd.jpg ./captcha_abcd my_code.jpg # 自定义输出文件名 ``` ### captcha_text — 点阵字体验证码(A-Z, 0-9) ```bash ./captcha_text "HELLO" # 输出 captcha_text.jpg ./captcha_text "XUEXI2024" out.jpg # 自定义输出 ``` ### captcha_truetype — TTF 字体验证码(支持中文) 编辑 `captcha_truetype.cpp` 顶部的配置区: ```cpp const char *INPUT_FILE = "input.txt"; // UTF-8 文本输入 const char *FONT_FILE = "msyh.ttc"; // 字体文件路径 const char *OUTPUT_FILE = "captcha.jpg"; // 输出文件 int FONT_SIZE = 48; // 字号 int IMG_WIDTH = 600; // 图片宽度(高度自动) int MARGIN = 25; // 边距 int LINE_GAP = 20; // 行间距 int MAX_ROTATE = 30; // 最大旋转角度 int NOISE_DOTS = 80; // 噪点数量 int LINE_NOISE = 5; // 干扰线数量 int JPEG_QUALITY = 95; // JPEG 质量 ``` 准备 `input.txt`(UTF-8 编码),然后运行: ```bash ./captcha_truetype ``` **字体路径参考:** | 系统 | 路径 | |------|------| | Windows | `C:\Windows\Fonts\msyh.ttc` | | Linux (wqy) | `/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc` | | Linux (noto) | `/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc` | ## 功能特性 - QR 二维码:字节模式编码,4 级纠错 - 验证码:字符随机旋转、随机颜色、干扰线、噪点 - TTF 字体验证码: - 支持中文、英文、数字(UTF-8) - 自动换行 - 自动选择 TTC 集合中的最佳子字体 - 顶部配置区集中管理所有参数 ## 依赖 - C/C++ 编译器(gcc/g++/clang) - 数学库(`-lm`) - 无其他外部依赖