| 1 31 32 package org.opencms.frontend.templateone.form; 33 34 import org.opencms.main.OpenCms; 35 36 import java.awt.image.ImageFilter ; 37 import java.util.Locale ; 38 39 import com.jhlabs.image.WaterFilter; 40 import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator; 41 import com.octo.captcha.component.image.backgroundgenerator.FileReaderRandomBackgroundGenerator; 42 import com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator; 43 import com.octo.captcha.component.image.deformation.ImageDeformation; 44 import com.octo.captcha.component.image.deformation.ImageDeformationByFilters; 45 import com.octo.captcha.component.image.fontgenerator.FontGenerator; 46 import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator; 47 import com.octo.captcha.component.image.textpaster.BaffleRandomTextPaster; 48 import com.octo.captcha.component.image.textpaster.TextPaster; 49 import com.octo.captcha.component.image.wordtoimage.DeformedComposedWordToImage; 50 import com.octo.captcha.component.image.wordtoimage.WordToImage; 51 import com.octo.captcha.component.wordgenerator.RandomWordGenerator; 52 import com.octo.captcha.component.wordgenerator.WordGenerator; 53 import com.octo.captcha.engine.image.ImageCaptchaEngine; 54 import com.octo.captcha.image.ImageCaptcha; 55 import com.octo.captcha.image.ImageCaptchaFactory; 56 import com.octo.captcha.image.gimpy.GimpyFactory; 57 58 68 public class CmsCaptchaEngine extends ImageCaptchaEngine { 69 70 71 private ImageCaptchaFactory m_factory; 72 73 74 private CmsCaptchaSettings m_settings; 75 76 82 public CmsCaptchaEngine(CmsCaptchaSettings captchaSettings) { 83 84 super(); 85 86 m_settings = captchaSettings; 87 initGimpyFactory(); 88 } 89 90 93 public ImageCaptcha getNextImageCaptcha() { 94 95 return m_factory.getImageCaptcha(); 96 } 97 98 101 public ImageCaptcha getNextImageCaptcha(Locale locale) { 102 103 return m_factory.getImageCaptcha(locale); 104 } 105 106 112 public void setSettings(CmsCaptchaSettings settings) { 113 114 m_settings = settings; 115 initGimpyFactory(); 116 } 117 118 122 protected void initGimpyFactory() { 123 124 WaterFilter water = new WaterFilter(); 125 water.setAmplitude(m_settings.getFilterAmplitude()); 126 water.setAntialias(true); 127 water.setPhase(0); 128 water.setWavelength(m_settings.getFilterWaveLength()); 129 130 ImageDeformation backgroundDeformation = new ImageDeformationByFilters(new ImageFilter [] {}); 131 ImageDeformation textDeformation = new ImageDeformationByFilters(new ImageFilter [] {}); 132 ImageDeformation postDeformation = new ImageDeformationByFilters(new ImageFilter [] {water}); 133 134 WordGenerator randomWords = new RandomWordGenerator(m_settings.getCharacterPool()); 139 140 TextPaster paster = new BaffleRandomTextPaster( 141 new Integer (m_settings.getMinPhraseLength()), 142 new Integer (m_settings.getMaxPhraseLength()), 143 m_settings.getFontColor(), 144 m_settings.getHolesPerGlyph(), 145 m_settings.getBackgroundColor()); 146 147 BackgroundGenerator background; 148 if (m_settings.isUseBackgroundImage()) { 149 background = new FileReaderRandomBackgroundGenerator(new Integer (m_settings.getImageWidth()), new Integer ( 150 m_settings.getImageHeight()), OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebApplication( 151 "resources/captchabackgrounds/")); 152 153 } else { 154 background = new UniColorBackgroundGenerator(new Integer (m_settings.getImageWidth()), new Integer ( 155 m_settings.getImageHeight()), m_settings.getBackgroundColor()); 156 } 157 158 FontGenerator font = new RandomFontGenerator(new Integer (m_settings.getMinFontSize()), new Integer ( 159 m_settings.getMaxFontSize())); 160 161 WordToImage wordToImage = new DeformedComposedWordToImage( 162 font, 163 background, 164 paster, 165 backgroundDeformation, 166 textDeformation, 167 postDeformation); 168 169 m_factory = new GimpyFactory(randomWords, wordToImage); 170 } 171 172 } 173 | Popular Tags |