<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 閱讀(2630) 評(píng)論(1)  編輯  收藏 所屬分類: Security領(lǐng)域

    評(píng)論

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

    gfumfgum  回復(fù)  更多評(píng)論   

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(110)

    我參與的團(tuán)隊(duì)

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊(cè)

    搜索

    積分與排名

    最新隨筆

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲精品无码久久久久YW| 国产人妖ts在线观看免费视频| 麻豆国产人免费人成免费视频| 亚洲精品免费视频| 222www免费视频| 最近2019中文字幕mv免费看| 亚洲av永久无码精品漫画| 俄罗斯极品美女毛片免费播放| 毛片免费全部免费观看| 亚洲精品一区二区三区四区乱码| 亚洲AV本道一区二区三区四区 | 国产精品亚洲精品日韩动图| 亚洲小说图区综合在线| 亚洲欧美自偷自拍另类视| 暖暖免费日本在线中文| 免费很黄无遮挡的视频毛片| 国产成人亚洲精品| caoporm碰最新免费公开视频 | 国产大陆亚洲精品国产| 免费观看理论片毛片| 国产精品高清视亚洲一区二区| 亚洲人成在线播放网站岛国| 中国一级特黄高清免费的大片中国一级黄色片 | 成视频年人黄网站免费视频| 久久青草精品38国产免费| 亚洲欧洲日产国码av系列天堂| 亚洲国产成人无码av在线播放| 亚洲色偷偷综合亚洲AV伊人蜜桃| 国产麻豆视频免费观看| 亚洲国产精品嫩草影院| 四虎永久在线免费观看| 国产激情久久久久影院老熟女免费 | 久久国产乱子伦精品免费不卡| 亚洲一区影音先锋色资源| 亚洲sss综合天堂久久久| 四虎影视永久免费视频观看| 大地资源中文在线观看免费版| 亚洲精品国产精品乱码不卞| 精品女同一区二区三区免费播放 | 亚洲人成电影在线天堂| 永久黄网站色视频免费|