Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Change the JCaptcha generation configuration?

Tags:

java

captcha

I have put up a Jcaptcha based on the example from the Jcaptcha site, but I need to configure the default jcaptcha with colors and fonts.

I managed to find this Configuration Jcaptcha with Spring, however this is with the use of Spring. I am a newbie with Java, and not using Spring, may I know how can I create new captcha configuration for my jcaptcha image?

Thank you in advance.

like image 948
jl. Avatar asked Dec 13 '25 12:12

jl.


1 Answers

The example you are pointing to is, indeed, for Spring Framework. But thats is of little concern here. I can imagine the difficulty one might have, who has no idea about how dependency injection works. So here is the same thing programmatically. Note, I will cut it short for brevity.

  • You need to create ImageCaptchaFactory, from your given URL its, com.octo.captcha.image.gimpy.GimpyFactory
  • Supply that to the ImageCaptchaEngine, while instantiating your captcha engine, namely com.octo.captcha.engine.GenericCaptchaEngine
  • And then pass that to your captcha service, com.octo.captcha.service.multitype.GenericManageableCaptchaService

Now about the colors and fonts. You will need to give information about colors and fonts to your captcha factory. How? Here you go,

  • The factory is taking two arguments, of object type, word generator and word-to-image-composer, com.octo.captcha.component.wordgenerator.DictionaryWordGenerator and com.octo.captcha.component.image.wordtoimage.ComposedWordToImage, respectively
  • Word generator has nothing to do with color and fonts, so we left with the word-to-image composer. So, you need to provide those to composer at the time of instantiation, or perhaps there are some setters available. Check out the docs
  • The example is showing the config to generate random fonts, if you don't want it read the docs. Precisely, whats shown in the example there, you will need to create an instance of com.octo.captcha.component.image.fontgenerator.RandomFontGenerator with your choice of available fonts and pass that to the factory
  • Quite similarly, you will be instantiating relevant color objects, look into com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator for background color, and com.octo.captcha.component.image.color.SingleColorGenerator for color
  • For random colors look at, com.octo.captcha.component.image.color.RandomRangeColorGenerator
like image 139
Adeel Ansari Avatar answered Dec 16 '25 13:12

Adeel Ansari



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!