Skip to content

Instantly share code, notes, and snippets.

@wolfg1969
Created August 23, 2012 06:20
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wolfg1969/3433346 to your computer and use it in GitHub Desktop.
Save wolfg1969/3433346 to your computer and use it in GitHub Desktop.
spring beans configuration for jcaptcha service
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);
}
}
<?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