Created
August 23, 2012 06:20
-
-
Save wolfg1969/3433346 to your computer and use it in GitHub Desktop.
spring beans configuration for jcaptcha service
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package me.guoyong.demo; | |
import com.jhlabs.image.WaterFilter; | |
import com.octo.captcha.CaptchaFactory; | |
import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator; | |
import com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator; | |
import com.octo.captcha.component.image.deformation.ImageDeformation; | |
import com.octo.captcha.component.image.deformation.ImageDeformationByFilters; | |
import com.octo.captcha.component.image.fontgenerator.FontGenerator; | |
import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator; | |
import com.octo.captcha.component.image.textpaster.RandomTextPaster; | |
import com.octo.captcha.component.image.textpaster.TextPaster; | |
import com.octo.captcha.component.image.wordtoimage.DeformedComposedWordToImage; | |
import com.octo.captcha.component.image.wordtoimage.WordToImage; | |
import com.octo.captcha.component.word.wordgenerator.RandomWordGenerator; | |
import com.octo.captcha.component.word.wordgenerator.WordGenerator; | |
import com.octo.captcha.engine.CaptchaEngine; | |
import com.octo.captcha.engine.GenericCaptchaEngine; | |
import com.octo.captcha.image.gimpy.GimpyFactory; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import java.awt.*; | |
import java.awt.image.ImageFilter; | |
/** | |
* User: guoyong | |
* Date: 8/3/12 4:05 PM | |
*/ | |
@Configuration | |
public class CaptchaServiceBeanConfig { | |
@Bean | |
public CaptchaService captchaService() { | |
WordGenerator wordGen = new RandomWordGenerator("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); | |
FontGenerator fontGenRandom = new RandomFontGenerator(20, 20, | |
new Font[] { new Font("Arial", Font.PLAIN, 10) }); | |
BackgroundGenerator backgroundGenerator = new UniColorBackgroundGenerator(90, 30); | |
TextPaster textPaster = new RandomTextPaster(4, 4, new Color(0, 0, 0)); | |
/*WordToImage wordToImage = new ComposedWordToImage(fontGenRandom, backgroundGenerator, textPaster);*/ | |
WaterFilter waterFilter = new WaterFilter(); | |
waterFilter.setAmplitude(3d); | |
waterFilter.setAntialias(true); | |
waterFilter.setPhase(50d); | |
waterFilter.setWavelength(40d); | |
ImageDeformation finalDeformation = new ImageDeformationByFilters( | |
new ImageFilter[] {waterFilter}); | |
WordToImage wordToImage = new DeformedComposedWordToImage(fontGenRandom, backgroundGenerator, textPaster, | |
new ImageDeformation[] {}, | |
new ImageDeformation[] {}, | |
new ImageDeformation[] {finalDeformation}); | |
CaptchaFactory captchaFactory = new GimpyFactory(wordGen, wordToImage); | |
CaptchaEngine captchaEngine = new GenericCaptchaEngine(new CaptchaFactory[] {captchaFactory}); | |
return new GenericManageableCaptchaService(captchaEngine, 180, 180000, 75000); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xmlns:context="http://www.springframework.org/schema/context" | |
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd | |
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> | |
<!-- captcha service --> | |
<bean id="captchaService" class="com.octo.captcha.service.multitype.GenericManageableCaptchaService"> | |
<constructor-arg index="0"> | |
<ref bean="imageEngine" /> | |
</constructor-arg> | |
<constructor-arg index="1"> | |
<value>180</value> | |
</constructor-arg> | |
<constructor-arg index="2"> | |
<value>180000</value> | |
</constructor-arg> | |
<constructor-arg type="int" index="3"> | |
<value>75000</value> | |
</constructor-arg> | |
</bean> | |
<bean id="imageEngine" class="com.octo.captcha.engine.GenericCaptchaEngine"> | |
<constructor-arg index="0"> | |
<list> | |
<ref bean="captchaFactory" /> | |
</list> | |
</constructor-arg> | |
</bean> | |
<bean id="captchaFactory" class="com.octo.captcha.image.gimpy.GimpyFactory"> | |
<constructor-arg> | |
<ref bean="wordGen" /> | |
</constructor-arg> | |
<constructor-arg> | |
<ref bean="wordToImage" /> | |
</constructor-arg> | |
</bean> | |
<bean id="wordGen" class="com.octo.captcha.component.word.wordgenerator.RandomWordGenerator"> | |
<constructor-arg> | |
<value>abcdefghijklmnopqrstuvwxyz</value> | |
</constructor-arg> | |
</bean> | |
<bean id="wordToImage" class="com.octo.captcha.component.image.wordtoimage.ComposedWordToImage"> | |
<constructor-arg index="0"> | |
<ref bean="fontGenRandom" /> | |
</constructor-arg> | |
<constructor-arg index="1"> | |
<ref bean="backGenUni" /> | |
</constructor-arg> | |
<constructor-arg index="2"> | |
<ref bean="randomTextPaster" /> | |
</constructor-arg> | |
</bean> | |
<!--<bean id="wordToImage" class="com.octo.captcha.component.image.wordtoimage.DeformedComposedWordToImage"> | |
<constructor-arg index="0"> | |
<ref bean="fontGenRandom" /> | |
</constructor-arg> | |
<constructor-arg index="1"> | |
<ref bean="backGenUni" /> | |
</constructor-arg> | |
<constructor-arg index="2"> | |
<ref bean="randomTextPaster" /> | |
</constructor-arg> | |
<constructor-arg index="3"> | |
<list /> | |
</constructor-arg> | |
<constructor-arg index="4"> | |
<list /> | |
</constructor-arg> | |
<constructor-arg index="5"> | |
<ref bean="imageDeformationByFilters" /> | |
</constructor-arg> | |
</bean>--> | |
<bean id="imageDeformationByFilters" class="com.octo.captcha.component.image.deformation.ImageDeformationByFilters"> | |
<constructor-arg> | |
<list> | |
<ref bean="waterFilter" /> | |
</list> | |
</constructor-arg> | |
</bean> | |
<bean id="waterFilter" class="com.jhlabs.image.WaterFilter"> | |
<property name="amplitude" value="2d" /> | |
<property name="antialias" value="true" /> | |
<property name="phase" value="20d" /> | |
<property name="wavelength" value="20d" /> | |
</bean> | |
<bean id="fontGenRandom" class="com.octo.captcha.component.image.fontgenerator.RandomFontGenerator"> | |
<constructor-arg index="0"> | |
<value>18</value> | |
</constructor-arg> | |
<constructor-arg index="1"> | |
<value>18</value> | |
</constructor-arg> | |
<constructor-arg index="2"> | |
<list> | |
<ref bean="fontArial" /> | |
</list> | |
</constructor-arg> | |
</bean> | |
<bean id="backGenUni" class="com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator"> | |
<constructor-arg index="0"> | |
<value>90</value> | |
</constructor-arg> | |
<constructor-arg index="1"> | |
<value>26</value> | |
</constructor-arg> | |
</bean> | |
<bean id="simpleWhitePaster" class="com.octo.captcha.component.image.textpaster.SimpleTextPaster"> | |
<constructor-arg type="java.lang.Integer" index="0"> | |
<value>4</value> | |
</constructor-arg> | |
<constructor-arg type="java.lang.Integer" index="1"> | |
<value>4</value> | |
</constructor-arg> | |
<constructor-arg type="java.awt.Color" index="2"> | |
<ref bean="colorBlack" /> | |
</constructor-arg> | |
</bean> | |
<bean id="randomTextPaster" class="com.octo.captcha.component.image.textpaster.RandomTextPaster"> | |
<constructor-arg type="java.lang.Integer" index="0"> | |
<value>4</value> | |
</constructor-arg> | |
<constructor-arg type="java.lang.Integer" index="1"> | |
<value>4</value> | |
</constructor-arg> | |
<constructor-arg type="java.awt.Color" index="2"> | |
<ref bean="colorBlack" /> | |
</constructor-arg> | |
</bean> | |
<bean id="fontArial" class="java.awt.Font"> | |
<constructor-arg index="0"> | |
<value>Arial</value> | |
</constructor-arg> | |
<constructor-arg index="1"> | |
<value>0</value> | |
</constructor-arg> | |
<constructor-arg index="2"> | |
<value>10</value> | |
</constructor-arg> | |
</bean> | |
<bean id="colorBlack" class="java.awt.Color"> | |
<constructor-arg index="0"> | |
<value>0</value> | |
</constructor-arg> | |
<constructor-arg index="1"> | |
<value>0</value> | |
</constructor-arg> | |
<constructor-arg index="2"> | |
<value>0</value> | |
</constructor-arg> | |
</bean> | |
<!--<bean id="textPaster" class="com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster"> | |
<constructor-arg type="java.lang.Integer" index="0"> | |
<value>4</value> | |
</constructor-arg> | |
<constructor-arg type="java.lang.Integer" index="1"> | |
<value>4</value> | |
</constructor-arg> | |
<constructor-arg type="com.octo.captcha.component.image.color.ColorGenerator" index="2"> | |
<ref bean="colorGenerator" /> | |
</constructor-arg> | |
<constructor-arg index="3"> | |
<list> | |
<ref bean="baffleTextDecorator" /> | |
</list> | |
</constructor-arg> | |
</bean>--> | |
<!--<bean id="colorGenerator" class="com.octo.captcha.component.image.color.SingleColorGenerator"> | |
<constructor-arg> | |
<ref bean="colorBlack" /> | |
</constructor-arg> | |
</bean>--> | |
<!--<bean id="lineTextDecorator" class="com.octo.captcha.component.image.textpaster.textdecorator.LineTextDecorator"> | |
<constructor-arg type="java.lang.Integer" index="0"> | |
<value>1</value> | |
</constructor-arg> | |
<constructor-arg type="com.octo.captcha.component.image.color.ColorGenerator" index="1"> | |
<ref bean="colorGenerator" /> | |
</constructor-arg> | |
</bean>--> | |
<!--<bean id="baffleTextDecorator" class="com.octo.captcha.component.image.textpaster.textdecorator.BaffleTextDecorator"> | |
<constructor-arg type="java.lang.Integer" index="0"> | |
<value>1</value> | |
</constructor-arg> | |
<constructor-arg type="com.octo.captcha.component.image.color.ColorGenerator" index="1"> | |
<ref bean="colorGenerator" /> | |
</constructor-arg> | |
</bean>--> | |
</beans> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment