Class AbstractProvider

java.lang.Object
org.miaixz.bus.extra.captcha.AbstractProvider
All Implemented Interfaces:
org.miaixz.bus.core.Provider, CaptchaProvider
Direct Known Subclasses:
CircleProvider, ClickWordProvider, GifProvider, LineProvider, PuzzleProvider, ShearProvider

public abstract class AbstractProvider extends Object implements CaptchaProvider
抽象验证码 抽象验证码实现了验证码字符串的生成、验证,验证码图片的写出 实现类通过实现createImage(String) 方法生成图片对象
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • width

      protected int width
      图片的宽度
    • height

      protected int height
      图片的高度
    • interfereCount

      protected int interfereCount
      验证码干扰元素个数
    • font

      protected Font font
      字体
    • code

      protected String code
      验证码
    • imageBytes

      protected byte[] imageBytes
      验证码图片
    • generator

      protected CodeStrategy generator
      验证码生成器
    • background

      protected Color background
      背景色
    • textAlpha

      protected AlphaComposite textAlpha
      文字透明度
  • Constructor Details

    • AbstractProvider

      public AbstractProvider(int width, int height, int codeCount, int interfereCount)
      构造,使用随机验证码生成器生成验证码
      Parameters:
      width - 图片宽
      height - 图片高
      codeCount - 字符个数
      interfereCount - 验证码干扰元素个数
    • AbstractProvider

      public AbstractProvider(int width, int height, CodeStrategy generator, int interfereCount)
      构造
      Parameters:
      width - 图片宽
      height - 图片高
      generator - 验证码生成器
      interfereCount - 验证码干扰元素个数
    • AbstractProvider

      public AbstractProvider(int width, int height, CodeStrategy generator, int interfereCount, float sizeBaseHeight)
      构造
      Parameters:
      width - 图片宽
      height - 图片高
      generator - 验证码生成器
      interfereCount - 验证码干扰元素个数
      sizeBaseHeight - 字体的大小 高度的倍数
  • Method Details

    • create

      public void create()
      Description copied from interface: CaptchaProvider
      创建验证码,实现类需同时生成随机验证码字符串和验证码图片
      Specified by:
      create in interface CaptchaProvider
    • generateCode

      protected void generateCode()
      生成验证码字符串
    • createImage

      protected abstract Image createImage(String code)
      根据生成的code创建验证码图片
      Parameters:
      code - 验证码
      Returns:
      Image
    • get

      public String get()
      Description copied from interface: CaptchaProvider
      获取验证码的文字内容
      Specified by:
      get in interface CaptchaProvider
      Returns:
      验证码文字内容
    • verify

      public boolean verify(String userInputCode)
      Description copied from interface: CaptchaProvider
      验证验证码是否正确,建议忽略大小写
      Specified by:
      verify in interface CaptchaProvider
      Parameters:
      userInputCode - 用户输入的验证码
      Returns:
      是否与生成的一直
    • write

      public void write(String path) throws org.miaixz.bus.core.lang.exception.InternalException
      验证码写出到文件
      Parameters:
      path - 文件路径
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • write

      public void write(File file) throws org.miaixz.bus.core.lang.exception.InternalException
      验证码写出到文件
      Parameters:
      file - 文件
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • write

      public void write(OutputStream out)
      Description copied from interface: CaptchaProvider
      将验证码写出到目标流中
      Specified by:
      write in interface CaptchaProvider
      Parameters:
      out - 目标流
    • getImageBytes

      public byte[] getImageBytes()
      获取图形验证码图片bytes
      Returns:
      图形验证码图片bytes
    • getImage

      public BufferedImage getImage()
      获取验证码图 注意返回的BufferedImage使用完毕后需要调用Image.flush()释放资源
      Returns:
      验证码图
    • getImageBase64

      public String getImageBase64()
      获得图片的Base64形式
      Returns:
      图片的Base64
    • getImageBase64Data

      public String getImageBase64Data()
      获取图片带文件格式的 Base64
      Returns:
      图片带文件格式的 Base64
    • setFont

      public void setFont(Font font)
      自定义字体
      Parameters:
      font - 字体
    • getGenerator

      public CodeStrategy getGenerator()
      获取验证码生成器
      Returns:
      验证码生成器
    • setGenerator

      public void setGenerator(CodeStrategy generator)
      设置验证码生成器
      Parameters:
      generator - 验证码生成器
    • setBackground

      public void setBackground(Color background)
      设置背景色,null表示透明背景
      Parameters:
      background - 背景色
    • setTextAlpha

      public void setTextAlpha(float textAlpha)
      设置文字透明度
      Parameters:
      textAlpha - 文字透明度,取值0~1,1表示不透明