这是一个老项目留下的问题,首先他是这么配置的
180 180000 toddlist 20 20 Tahoma 1 1 60 28 4 4 0 51 153
然后我写了两个类, GimpyCopy.java
/* * jcaptcha, the open source java framework for captcha definition and integration * Copyright (c) 2005 jcaptcha.net. All Rights Reserved. * See the LICENSE.txt file distributed with this package. */
package com.octo.captcha.image.gimpy;import com.octo.captcha.image.ImageCaptcha;import java.awt.image.BufferedImage;import java.io.Serializable;/** *A Gimpy is a ImagCaptcha. It is also the most common captcha.
- Challenge type : image *
- Response type : String
- Description : An image of a distorded word is shown. User have to recognize the * word and to submit it.
GimpyCopyFactory.java
/* * jcaptcha, the open source java framework for captcha definition and integration * Copyright (c) 2005 jcaptcha.net. All Rights Reserved. * See the LICENSE.txt file distributed with this package. */
package com.octo.captcha.image.gimpy;import com.octo.captcha.CaptchaException;import com.octo.captcha.CaptchaQuestionHelper;import com.octo.captcha.component.image.wordtoimage.WordToImage;import com.octo.captcha.component.word.wordgenerator.WordGenerator;import com.octo.captcha.image.ImageCaptcha;import java.awt.image.BufferedImage;import java.security.SecureRandom;import java.util.Locale;import java.util.Random;/** * Factories for Gimpies. Built on top of WordGenerator and WordToImage. It uses thoses interfaces to build an * ImageCaptha answered by a String and for which the question is : Spell the word. */public class GimpyCopyFactory extends com.octo.captcha.image.ImageCaptchaFactory { private Random myRandom = new SecureRandom(); private WordToImage wordToImage; private WordGenerator wordGenerator; public static final String BUNDLE_QUESTION_KEY = Gimpy.class.getName(); // 这个还是用原来的Gimpy public GimpyCopyFactory(WordGenerator generator, WordToImage word2image) { if (word2image == null) { throw new CaptchaException("Invalid configuration" + " for a GimpyFactory : WordToImage can't be null"); } if (generator == null) { throw new CaptchaException("Invalid configuration" + " for a GimpyFactory : WordGenerator can't be null"); } wordToImage = word2image; wordGenerator = generator; } /** * gimpies are ImageCaptcha * * @return the image captcha with default locale */ public ImageCaptcha getImageCaptcha() { return getImageCaptcha(Locale.getDefault()); } public WordToImage getWordToImage() { return wordToImage; } public WordGenerator getWordGenerator() { return wordGenerator; } /** * gimpies are ImageCaptcha * * @return a pixCaptcha with the question :"spell the word" */ public ImageCaptcha getImageCaptcha(Locale locale) { //length Integer wordLength = getRandomLength(); String word = getWordGenerator().getWord(wordLength, locale); BufferedImage image = null; try { image = getWordToImage().getImage(word); } catch (Throwable e) { throw new CaptchaException(e); } // 这里用我们自己写的GimpyCopy ImageCaptcha captcha = new GimpyCopy(CaptchaQuestionHelper.getQuestion(locale, BUNDLE_QUESTION_KEY), image, word); return captcha; } protected Integer getRandomLength() { Integer wordLength; int range = getWordToImage().getMaxAcceptedWordLength() - getWordToImage().getMinAcceptedWordLength(); int randomRange = range != 0 ? myRandom.nextInt(range + 1) : 0; wordLength = new Integer(randomRange + getWordToImage().getMinAcceptedWordLength()); return wordLength; }}
这下好了,问题解决了