001 package railo.commons.img; 002 003 import java.awt.Font; 004 import java.awt.image.BufferedImage; 005 import java.io.IOException; 006 import java.io.OutputStream; 007 008 import javax.imageio.ImageIO; 009 010 /** 011 * concrete captcha implementation 012 */ 013 public final class Captcha extends AbstractCaptcha { 014 015 private static final char[] chars=new char[]{ 016 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' 017 ,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' 018 //,'0','1','2','3','4','5','6','7','8','9' 019 }; 020 021 @Override 022 public Font getFont(String font, Font defaultValue) { 023 return Font.decode(font); 024 } 025 026 /** 027 * write out image object to a output stream 028 * @param image 029 * @param os 030 * @param format 031 * @throws IOException 032 */ 033 public static void writeOut(BufferedImage image, OutputStream os, String format) throws IOException { 034 ImageIO.write(image, format, os); 035 036 } 037 038 /** 039 * creates a random String in given length 040 * @param length length of the string to create 041 * @return 042 */ 043 public static String randomString(int length) { 044 StringBuilder sb=new StringBuilder(); 045 for(int i=0;i<length;i++) { 046 sb.append(chars[AbstractCaptcha.rnd(0,chars.length-1)]); 047 } 048 return sb.toString(); 049 } 050 }