Captcha API

包结构概览

库的代码组织在基础包 com.onixbyte.captcha 下,结构如下:

描述
com.onixbyte.captcha核心接口
com.onixbyte.captcha.impl默认实现
com.onixbyte.captcha.text文本生成器和渲染器接口
com.onixbyte.captcha.text.impl文本生成器和渲染器实现
com.onixbyte.captcha.text.enums文本相关枚举
com.onixbyte.captcha.background背景生成器接口
com.onixbyte.captcha.background.impl背景生成器实现
com.onixbyte.captcha.noise噪点生成器接口
com.onixbyte.captcha.noise.impl噪点生成器实现
com.onixbyte.captcha.gimpy扭曲引擎接口
com.onixbyte.captcha.gimpy.impl扭曲引擎实现

Producer

负责创建 CAPTCHA 图片并在其上绘制文字的顶层接口。

Producer captcha = DefaultCaptchaProducer.builder()
    .textProducer(textProducer)
    .wordRenderer(wordRenderer)
    .gimpyEngine(gimpyEngine)
    .backgroundProducer(backgroundProducer)
    .width(200)
    .height(50)
    .borderDrawn(true)
    .borderColour(Color.BLACK)
    .borderThickness(1)
    .build();

String text = captcha.createText();
BufferedImage image = captcha.createImage(text);

DefaultCaptchaProducer Builder

方法默认值描述
textProducerDefaultTextProducer.builder().build()文本生成器
wordRendererDefaultWordRenderer.builder().build()文字渲染器
gimpyEngineWaterRipple.builder().build()扭曲引擎
backgroundProducerDefaultBackgroundProducer.builder().build()背景生成器
width200验证码图片宽度
height50验证码图片高度
borderDrawntrue是否绘制边框
borderColourColor.BLACK边框颜色
borderThickness1边框厚度

Text

TextProducer

用于创建 CAPTCHA 文本字符串的接口。

public interface TextProducer {
    String getText();
}

DefaultTextProducer

生成可配置长度和字符集的随机文本。

DefaultTextProducer textProducer = DefaultTextProducer.builder()
    .length(6)                                    // 默认: 6
    .chars("ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray()) // 默认: a-z, A-Z, 0-9
    .build();
方法默认值描述
length6生成文本的长度
charsa-zA-Z0-9(共 62 个字符)生成文本使用的字符集

WordRenderer

将文字渲染到图片上的接口。

public interface WordRenderer {
    BufferedImage renderWord(String word, int width, int height);
}

DefaultWordRenderer

使用可配置的字体、颜色和间距渲染文字。

DefaultWordRenderer wordRenderer = DefaultWordRenderer.builder()
    .fontSize(40)                          // 默认: 40
    .fonts("Arial", "Courier")             // 默认: Arial, Courier
    .fontColour(Color.BLACK)               // 默认: Color.BLACK
    .charSpace(2)                          // 默认: 2
    .fontStyle(FontStyle.BOLD)             // 默认: FontStyle.BOLD
    .build();
方法默认值描述
fontSize40字号(像素)
fonts["Arial", "Courier"]字体族(随机选择)
fontColourColor.BLACK字体颜色
charSpace2字符间距(像素)
fontStyleFontStyle.BOLD字体样式

FontStyle

定义 CAPTCHA 文字渲染支持的字体样式。

对应的 AWT 常量描述
PLAINjava.awt.Font.PLAIN普通样式
BOLDjava.awt.Font.BOLD粗体
ITALICjava.awt.Font.ITALIC斜体
BOLD_ITALIC`java.awt.Font.BOLDFont.ITALIC`

GimpyEngine

用于对图片应用扭曲效果的接口。

public interface GimpyEngine {
    BufferedImage getDistortedImage(BufferedImage baseImage);
}

WaterRipple

应用水波纹扭曲效果。继承 AbstractGimpyEngine,自动添加噪点。

WaterRipple gimpy = WaterRipple.builder()
    .noiseProducer(DefaultNoiseProducer.builder().build())  // 默认: DefaultNoiseProducer
    .build();
方法默认值描述
noiseProducerDefaultNoiseProducer.builder().build()噪点生成器

FishEyeGimpy

应用鱼眼扭曲效果,在图片上绘制水平和垂直线条。

FishEyeGimpy gimpy = FishEyeGimpy.builder()
    .build();

ShadowGimpy

应用阴影和波纹效果。继承 AbstractGimpyEngine,自动添加噪点。

ShadowGimpy gimpy = ShadowGimpy.builder()
    .noiseProducer(DefaultNoiseProducer.builder().build())  // 默认: DefaultNoiseProducer
    .build();
方法默认值描述
noiseProducerDefaultNoiseProducer.builder().build()噪点生成器

Noise

NoiseProducer

向图片添加噪点的接口。

public interface NoiseProducer {
    void makeNoise(BufferedImage image, float factorOne, float factorTwo,
                   float factorThree, float factorFour);
}

DefaultNoiseProducer

使用可配置的颜色添加噪点曲线。

DefaultNoiseProducer noise = DefaultNoiseProducer.builder()
    .noiseColour(Color.BLACK) // 默认: Color.BLACK
    .build();
方法默认值描述
noiseColourColor.BLACK噪点颜色

NoNoiseProducer

不向图片添加任何噪点的空实现。

NoiseProducer noise = NoNoiseProducer.builder()
    .build();

Background

BackgroundProducer

向图片添加背景的接口。

public interface BackgroundProducer {
    BufferedImage addBackground(BufferedImage image);
}

DefaultBackgroundProducer

创建具有可配置起始和结束颜色的渐变背景。

DefaultBackgroundProducer background = DefaultBackgroundProducer.builder()
    .colourFrom(Color.WHITE)       // 默认: Color.LIGHT_GRAY
    .colourTo(Color.LIGHT_GRAY)    // 默认: Color.WHITE
    .build();
方法默认值描述
colourFromColor.LIGHT_GRAY渐变起始颜色
colourToColor.WHITE渐变结束颜色