<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 閱讀(2634) 評論(1)  編輯  收藏 所屬分類: Security領域

    評論

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

    gfumfgum  回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲视频无码高清在线| 国产成人亚洲精品电影| 暖暖日本免费中文字幕| 国产成人精品亚洲精品| 一级成人生活片免费看| 区久久AAA片69亚洲| 插鸡网站在线播放免费观看| 亚洲日韩精品无码一区二区三区| 成人无码区免费A∨直播| 亚洲精品成人无限看| 亚洲专区中文字幕| 三级黄色免费观看| 亚洲AV乱码久久精品蜜桃| 免费看黄的成人APP| 日本免费人成黄页网观看视频| 亚洲第一成年免费网站| 亚洲精品456播放| 成人网站免费看黄A站视频| 久久久久亚洲AV无码专区体验| 一级毛片a免费播放王色| 久久青青草原亚洲AV无码麻豆 | 在线免费视频一区二区| 色一情一乱一伦一视频免费看| 国产精品亚洲不卡一区二区三区 | 亚洲国产欧美日韩精品一区二区三区| 免费被黄网站在观看| 精品日韩亚洲AV无码一区二区三区| aⅴ在线免费观看| 久久精品国产亚洲av成人| 无遮免费网站在线入口| 色噜噜的亚洲男人的天堂| 亚洲熟女少妇一区二区| 51精品视频免费国产专区| 亚洲精品在线观看视频| 毛片a级三毛片免费播放| 亚洲视频在线不卡| 国产精品高清全国免费观看| 亚洲高清视频在线| 久久久青草青青国产亚洲免观| www视频在线观看免费| 麻豆91免费视频|