public static void main(String[] args) throws IOException { TextPaster paster = new SimpleTextPaster(new Integer(8), new Integer(8), Color.white); BackgroundGenerator back = new FileReaderRandomBackgroundGenerator( new Integer(200), new Integer(100), "/gimpybackgrounds"); FontGenerator font = new TwistedAndShearedRandomFontGenerator( new Integer(30), null); WordGenerator words = new DummyWordGenerator("JCAPTCHA"); WordToImage word2image = new ComposedWordToImage(font, back, paster); ImageCaptchaFactory factory = new GimpyFactory(words, word2image); ImageCaptcha pix = factory.getImageCaptcha(); ImageToFile.serialize(pix.getImageChallenge(), new File(args[0])); } }
appendFilePath(triedPath, dir); if (isNotReadable(dir)) { appendFilePath(triedPath, dir); if (isNotReadable(dir)) { appendFilePath(triedPath, dir); if (isNotReadable(dir)) { dir = new File(getFilePath(url)); appendFilePath(triedPath, dir); dir = new File(getFilePath(url)); appendFilePath(triedPath, dir); if (isNotReadable(dir)) { StringTokenizer token = getClasspathFromSystemProperty(); while (token.hasMoreElements()) { String path = token.nextToken(); if (!path.endsWith(".jar")) { dir = new File(path, rootPath); appendFilePath(triedPath, dir); if (dir.canRead() && dir.isDirectory()) { break; if (isNotReadable(dir)) { throw new CaptchaException("All tried paths :'" + triedPath.toString() + "' is not" +
public FileReaderRandomBackgroundGenerator(Integer width, Integer height, String rootPath) { super(width, height); if (rootPath != null) this.rootPath = rootPath; File dir = findDirectory(this.rootPath); File[] files = dir.listFiles(); //get all jpeg if (files != null) { for (File file : files) { BufferedImage out = null; if (file.isFile()) { out = getImage(file); } if (out != null) { images.add(images.size(), out); } } if (images.size() != 0) { for (int i = 0; i < images.size(); i++) { BufferedImage bufferedImage = (BufferedImage) images.get(i); images.set(i, tile(bufferedImage)); } } else { throw new CaptchaException("Root path directory is valid but " + "does not contains any image (jpg) files"); } } }
private BufferedImage tile(BufferedImage tileImage) { BufferedImage image = new BufferedImage(getImageWidth(), getImageHeight(), tileImage.getType()); Graphics2D g2 = (Graphics2D) image.getGraphics(); int NumberX = (getImageWidth() / tileImage.getWidth()); int NumberY = (getImageHeight() / tileImage.getHeight()); for (int k = 0; k <= NumberY; k++) { for (int l = 0; l <= NumberX; l++) { g2.drawImage(tileImage, l * tileImage.getWidth(), k * tileImage.getHeight(), Math.min(tileImage.getWidth(), getImageWidth()), Math.min(tileImage.getHeight(), getImageHeight()), null); } } g2.dispose(); return image; }
BackgroundGenerator generator = new FileReaderRandomBackgroundGenerator( new Integer(250), new Integer(250), "./fisheyebackgrounds");
@Override protected void buildInitialFactories() { RandomListColorGenerator randomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR);// 验证码随机颜色 BackgroundGenerator backgroundGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH); // 验证码背景图片 WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD); FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT);// 验证码随机字体 TextDecorator[] textDecorator = new TextDecorator[] {}; TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, randomListColorGenerator, textDecorator); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); addFactory(new GimpyFactory(wordGenerator, wordToImage)); } }
@Override protected void buildInitialFactories() { RandomListColorGenerator randomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR);// 验证码随机颜色 BackgroundGenerator backgroundGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH); // 验证码背景图片 WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD); FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT);// 验证码随机字体 TextDecorator[] textDecorator = new TextDecorator[] {}; TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, randomListColorGenerator, textDecorator); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); addFactory(new GimpyFactory(wordGenerator, wordToImage)); } }
@Override protected void buildInitialFactories() { RandomListColorGenerator randomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR);// 验证码随机颜色 BackgroundGenerator backgroundGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH); // 验证码背景图片 WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD); FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT);// 验证码随机字体 TextDecorator[] textDecorator = new TextDecorator[] {}; TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, randomListColorGenerator, textDecorator); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); addFactory(new GimpyFactory(wordGenerator, wordToImage)); } }
background = new FileReaderRandomBackgroundGenerator(new Integer(m_settings.getImageWidth()), new Integer( m_settings.getImageHeight()), OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebApplication( "resources/captchabackgrounds/"));