📄 defaultwordrenderer.java
字号:
package nl.captcha.text.renderer;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.image.BufferedImage;
import java.util.Random;
/**
* @author <a href="mailto:james.childers@gmail.com">James Childers</a>
*/
public class DefaultWordRenderer implements WordRenderer {
private static final Color DEFAULT_COLOR = Color.BLACK;
private static final Font[] DEFAULT_FONTS = new Font[] {
new Font("Arial", Font.BOLD, 40),
new Font("Courier", Font.BOLD, 40) };
private final Color _color;
private final Font[] _fonts;
public DefaultWordRenderer() {
this(DEFAULT_COLOR, DEFAULT_FONTS);
}
public DefaultWordRenderer(Color color, Font[] fonts) {
_color = color;
_fonts = fonts;
}
/**
* Render a word onto a BufferedImage.
*
* @param word The word to be rendered.
* @param bi The BufferedImage onto which the word will be painted on to
*/
@Override
public void render(String word, BufferedImage image) {
Graphics2D g = image.createGraphics();
RenderingHints hints = new RenderingHints(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
hints.add(new RenderingHints(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY));
g.setRenderingHints(hints);
g.setColor(_color);
FontRenderContext frc = g.getFontRenderContext();
int startPosX = 25;
char[] wc = word.toCharArray();
Random generator = new Random();
for (char element : wc) {
char[] itchar = new char[] { element };
int choiceFont = generator.nextInt(_fonts.length);
Font itFont = _fonts[choiceFont];
g.setFont(itFont);
GlyphVector gv = itFont.createGlyphVector(frc, itchar);
double charWitdth = gv.getVisualBounds().getWidth();
g.drawChars(itchar, 0, itchar.length, startPosX, 35);
startPosX = startPosX + (int) charWitdth + 2;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -