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 /** 022 * 023 * @see railo.commons.img.AbstractCaptcha#getFont(java.lang.String, java.awt.Font) 024 */ 025 public Font getFont(String font, Font defaultValue) { 026 return Font.decode(font); 027 } 028 029 /** 030 * write out image object to a output stream 031 * @param image 032 * @param os 033 * @param format 034 * @throws IOException 035 */ 036 public static void writeOut(BufferedImage image, OutputStream os, String format) throws IOException { 037 ImageIO.write(image, format, os); 038 039 } 040 041 /** 042 * creates a random String in given length 043 * @param length length of the string to create 044 * @return 045 */ 046 public static String randomString(int length) { 047 StringBuilder sb=new StringBuilder(); 048 for(int i=0;i<length;i++) { 049 sb.append(chars[AbstractCaptcha.rnd(0,chars.length-1)]); 050 } 051 return sb.toString(); 052 } 053 }