package egovframework.com.cmm.captcha; import static nl.captcha.Captcha.NAME; import java.awt.Color; import java.awt.Font; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import nl.captcha.Captcha; import nl.captcha.backgrounds.GradiatedBackgroundProducer; import nl.captcha.gimpy.DropShadowGimpyRenderer; import nl.captcha.servlet.CaptchaServletUtil; import nl.captcha.text.producer.NumbersAnswerProducer; import nl.captcha.text.renderer.DefaultWordRenderer; public class CaptCha { private static final long serialVersionUID = 1L; private static int _width = 150; //이미지 가로크기 private static int _height = 50; //이미지 높이 private static int _fontsize = 44; //폰트크기 public CaptCha() { super(); } public void getCaptCha(HttpServletRequest req, HttpServletResponse resp) throws IOException { try { // 폰트 설정 ========================================================= List fontList = new ArrayList(); fontList.add(new Font("", Font.HANGING_BASELINE, 40));// fontList.add(new Font("Courier", Font.ITALIC, 40)); fontList.add(new Font("", Font.PLAIN, 40)); List colorList = new ArrayList(); // colorList.add(Color.green); // colorList.add(Color.pink); // colorList.add(Color.gray); colorList.add(Color.black); // colorList.add(Color.blue); // 폰트 설정 ========================================================= Captcha captcha = new Captcha.Builder( _width, _height) // .addText(wordRenderer) .addText(new NumbersAnswerProducer(6), //6자리 숫자로 된 문자를 추가 new DefaultWordRenderer(colorList, fontList)) //글자 꾸미기(색상, 폰트) .gimp(new DropShadowGimpyRenderer()).gimp() // BlockGimpyRenderer,FishEyeGimpyRenderer,RippleGimpyRenderer,ShearGimpyRenderer,StretchGimpyRenderer .addNoise().addNoise().addBorder() .addBackground(new GradiatedBackgroundProducer()) // FlatColorBackgroundProducer,SquigglesBackgroundProducer,TransparentBackgroundProducer .build(); req.getSession().setAttribute(NAME, captcha); CaptchaServletUtil.writeImage(resp, captcha.getImage()); } catch (Exception e) { e.printStackTrace(); } } }