<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    David.Turing's blog

     

    A Java Sample For jCaptcha

    Captcha? is very easy to used, i write a little java?sample to proved its powerful feature!

    So first download the jcaptcha-all-1.0-RC3.jar From http://jcaptcha.sourceforge.net/
    Then Run the following sample.


    /*
    ?*Copyright???2006?David.turing
    ?*Email:?securex@163.com
    ?*QQ群:14966586
    ?*Blog:?openssl.blogjava.net
    ?
    */

    package ?org.dev2dev.image.captcha;

    import ?java.awt.Color;
    import ?java.awt.Font;
    import ?java.awt.font.TextAttribute;
    import ?java.awt.image.BufferedImage;
    import ?java.io.File;
    import ?java.io.IOException;
    import ?java.text.AttributedString;

    import ?javax.imageio.ImageIO;

    import ?com.octo.captcha.CaptchaException;
    import ?com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator;
    import ?com.octo.captcha.component.image.backgroundgenerator.GradientBackgroundGenerator;
    import ?com.octo.captcha.component.image.fontgenerator.FontGenerator;
    import ?com.octo.captcha.component.image.fontgenerator.RandomFontGenerator;
    import ?com.octo.captcha.component.image.textpaster.SimpleTextPaster;
    import ?com.octo.captcha.component.image.textpaster.TextPaster;

    public ? class ?CaptchaHelper?{

    ????
    private ?FontGenerator?fontGenerator;

    ????
    private ?BackgroundGenerator?background;

    ????
    private ?TextPaster?textPaster;

    ????
    public ? void ?init(FontGenerator?fontGenerator,
    ????????????BackgroundGenerator?background,?TextPaster?textPaster)?{
    ????????
    this .background? = ?background;
    ????????
    this .fontGenerator? = ?fontGenerator;
    ????????
    this .textPaster? = ?textPaster;
    ????}

    ????
    public ?BufferedImage?getImage(String?word)? throws ?CaptchaException?{
    ????????
    int ?wordLength;
    ????????
    // Check?your?word?Lenth
    ????????wordLength? = ?checkWordLength(word);
    ????????
    // Process?font?for?word
    ????????AttributedString?attributedWord? = ?getAttributedString(word,?wordLength);
    ????????
    // Contruct?your?Backgroud
    ????????BufferedImage?background? = ?getBackround();
    ????????
    // Contruct?your?captcha?image?include?your?word!
    ???????? return ?pasteText(background,?attributedWord);

    ????}

    ????
    public ?AttributedString?getAttributedString(String?word,? int ?wordLength)?{
    ????????AttributedString?attributedWord?
    = ? new ?AttributedString(word);
    ????????
    // Here,?we?provide?each?char?of?the?word?a?kind?of?font,?so,??n?char,?n?font,?hehe?
    ???????? for ?( int ?i? = ? 0 ;?i? < ?wordLength;?i ++ )?{
    ????????????Font?font?
    = ?getFont(); // get?the?new?font?for?next?character
    ????????????attributedWord.addAttribute(TextAttribute.FONT,?font,?i,?i? + ? 1 );
    ????????}
    ????????
    return ?attributedWord;
    ????}

    ????
    int ?checkWordLength(String?word)? throws ?CaptchaException?{
    ????????
    int ?wordLength;
    ????????
    if ?(word? == ? null )?{
    ????????????
    throw ? new ?CaptchaException( " CaptchaHelper:null?word " );
    ????????}?
    else ?{
    ????????????wordLength?
    = ?word.length();
    ????????????
    if ?(wordLength? > ? this .getMaxAcceptedWordLength()
    ????????????????????
    || ?wordLength? < ?getMinAcceptedWordLength())?{
    ????????????????
    throw ? new ?CaptchaException( " CaptchaHelper:invalid?length?word " );
    ????????????}
    ????????}
    ????????
    return ?wordLength;
    ????}

    ????
    /**
    ?????*?
    @return ?the?max?word?length?accepted?by?this?word2image?service
    ?????
    */
    ????
    public ? int ?getMaxAcceptedWordLength()?{
    ????????
    return ?textPaster.getMaxAcceptedWordLength();
    ????}

    ????
    /**
    ?????*?
    @return ?the?min?word?length?accepted?by?this?word2image?service
    ?????
    */
    ????
    public ? int ?getMinAcceptedWordLength()?{
    ????????
    return ?textPaster.getMinAcceptedWordLength();
    ????}

    ????
    /**
    ?????*?
    @return ?the?generated?image?height
    ?????
    */
    ????
    public ? int ?getImageHeight()?{
    ????????
    return ?background.getImageHeight();
    ????}

    ????
    /**
    ?????*?
    @return ?teh?generated?image?width
    ?????
    */
    ????
    public ? int ?getImageWidth()?{
    ????????
    return ?background.getImageWidth();
    ????}

    ????
    /**
    ?????*?
    @return ?the?min?font?size?for?the?generated?image
    ?????
    */
    ????
    public ? int ?getMinFontSize()?{
    ????????
    return ?fontGenerator.getMinFontSize();
    ????}

    ????
    /**
    ?????*?Method?from?imageFromWord?method?to?apply?font?to?String.?Implementations?must?take?into?account?the?minFontSize
    ?????*?and?the?MaxFontSize.
    ?????*
    ?????*?
    @return ?a?Font
    ?????
    */
    ????Font?getFont()?{
    ????????
    return ?fontGenerator.getFont();
    ????}

    ????
    /**
    ?????*?Generates?a?backround?image?on?wich?text?will?be?paste.?Implementations?must?take?into?account?the?imageHeigt?and
    ?????*?imageWidth.
    ?????*
    ?????*?
    @return ?the?background?image
    ?????
    */
    ????BufferedImage?getBackround()?{
    ????????
    return ?background.getBackground();
    ????}

    ????
    /**
    ?????*?Pastes?the?attributed?string?on?the?backround?image?and?return?the?final?image.?Implementation?must?take?into
    ?????*?account?the?fact?that?the?text?must?be?readable?by?human?and?non?by?programs
    ?????*
    ?????*?
    @return ?the?final?image
    ?????*
    ?????*?
    @throws ?CaptchaException?if?any?exception?accurs?during?paste?routine.
    ?????
    */
    ????BufferedImage?pasteText(BufferedImage?background,
    ????????????AttributedString?attributedWord)?
    throws ?CaptchaException?{
    ????????
    return ?textPaster.pasteText(background,?attributedWord);
    ????}

    ????
    /**
    ?????*?
    @param ?args
    ?????
    */
    ????
    public ? static ? void ?main(String[]?args)?{

    ????????Integer?minAcceptedWordLength?
    = ? new ?Integer( 5 );
    ????????Integer?maxAcceptedWordLength?
    = ? new ?Integer( 30);
    ????????Integer?imageHeight?
    =?new?Integer(100);
    ????????Integer?imageWidth?
    =?new?Integer(400);
    ????????Integer?minFontSize?
    =?new?Integer(30);
    ????????Integer?maxFontSize?
    =?new?Integer(30);

    ????????BackgroundGenerator?background?
    =?new?GradientBackgroundGenerator(
    ????????????????imageWidth,?imageHeight,?Color.white,?Color.white);
    ????????FontGenerator?fontGenerator?
    =?new?RandomFontGenerator(minFontSize,
    ????????????????maxFontSize);
    ????????TextPaster?textPaster?
    =?new?SimpleTextPaster(minAcceptedWordLength,
    ????????????????maxAcceptedWordLength,?Color.blue);
    ????????CaptchaHelper?chelper?
    =?new?CaptchaHelper();
    ????????chelper.init(fontGenerator,?background,?textPaster);

    ????????BufferedImage?test?
    =?chelper.getImage("openssl.blogjava.net");
    ????????
    if?(test?!=?null)
    ????????????System.out.println(
    "width="?+?test.getWidth());
    ????????File?testfile?
    =?new?File("c:\\a.png");

    ????????
    try?{
    ????????????
    //?well?the?captcha?picture?is?generate,?open?the?png?file!
    ????????????ImageIO.write(test,?"PNG",?testfile);
    ????????}?
    catch?(IOException?e)?{
    ????????????e.printStackTrace();
    ????????}

    ????}

    }

    posted on 2006-06-20 22:10 david.turing 閱讀(2629) 評論(1)  編輯  收藏 所屬分類: Security領域

    評論

    # re: A Java Sample For jCaptcha 2008-01-22 02:14 gnmgfnm

    gfumfgum  回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在免费jizzjizz在线播| 啦啦啦完整版免费视频在线观看| 好吊妞在线成人免费| 亚洲免费观看网站| 日本XXX黄区免费看| 亚洲一区无码中文字幕乱码| 成人在线免费看片| 2017亚洲男人天堂一| 成人免费视频观看无遮挡| 亚洲国产精品无码久久98| 国产精品无码一区二区三区免费| 国产尤物在线视精品在亚洲| 亚洲成A人片在线观看无码3D| 一区二区三区免费看| 亚洲欧洲成人精品香蕉网| 91麻豆国产免费观看| 亚洲成人福利在线| 日本久久久免费高清| 又黄又大的激情视频在线观看免费视频社区在线| 国产麻豆剧传媒精品国产免费| 国产99久久亚洲综合精品| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲午夜久久久久久久久电影网| 一区二区三区视频免费| 亚洲精品无码午夜福利中文字幕| 无码少妇精品一区二区免费动态| 亚洲国产模特在线播放| 免费人成视频在线观看视频 | 看亚洲a级一级毛片| 亚洲愉拍99热成人精品热久久| 久99久精品免费视频热77| 激情五月亚洲色图| 亚洲国产精品综合久久网络 | 国产成人免费网站| 无套内射无矿码免费看黄| 亚洲av伊人久久综合密臀性色| 国产精品久久久久免费a∨| 免费无遮挡无码视频在线观看| 亚洲酒色1314狠狠做| 日本最新免费不卡二区在线| a级黄色毛片免费播放视频|