亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mvncaptchaservice.java

?? java servlet著名論壇源代碼
?? JAVA
字號:
/*
 * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/common/MVNCaptchaService.java,v 1.2 2004/03/09 18:31:18 minhnn Exp $
 * $Author: minhnn $
 * $Revision: 1.2 $
 * $Date: 2004/03/09 18:31:18 $
 *
 * ====================================================================
 *
 * Copyright (C) 2002-2004 by MyVietnam.net
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * All copyright notices regarding mvnForum MUST remain intact
 * in the scripts and in the outputted HTML.
 * The "powered by" text/logo with a link back to
 * http://www.mvnForum.com and http://www.MyVietnam.net in the
 * footer of the pages MUST remain visible when the pages
 * are viewed on the internet or intranet.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * Support can be obtained from support forums at:
 * http://www.mvnForum.com/mvnforum/index
 *
 * Correspondence and Marketing Questions can be sent to:
 * info@MyVietnam.net
 *
 * @author: Minh Nguyen  minhnn@MyVietnam.net
 * @author: Mai  Nguyen  mai.nh@MyVietnam.net
 */
package com.mvnforum.common;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.awt.Color;
import java.awt.image.BufferedImage;

import com.mvnforum.auth.AuthenticationException;
import com.mvnforum.auth.OnlineUserManager;
import com.octo.captcha.image.ImageCaptchaFactory;
import com.octo.captcha.image.ListImageCaptchaEngine;
import com.octo.captcha.image.gimpy.*;
import com.octo.captcha.image.gimpy.wordgenerator.RandomWordGenerator;
import com.octo.captcha.image.gimpy.wordtoimage.*;
import com.octo.captcha.image.gimpy.wordtoimage.backgroundgenerator.*;
import com.octo.captcha.image.gimpy.wordtoimage.fontgenerator.TwistedAndShearedRandomFontGenerator;
import com.octo.captcha.image.gimpy.wordtoimage.textpaster.RandomTextPaster;
import com.octo.captcha.image.gimpy.wordtoimage.textpaster.SimpleTextPaster;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import net.myvietnam.mvncore.exception.AssertionException;
import net.myvietnam.mvncore.exception.DatabaseException;

public class MVNCaptchaService extends ListImageCaptchaEngine {

    private static final Integer MIN_WORD_LENGTH = new Integer(6);

    private static final Integer MAX_WORD_LENGTH = new Integer(8);

    private static final Integer IMAGE_WIDTH     = new Integer(380);

    private static final Integer IMAGE_HEIGHT    = new Integer(80);

    private static final Integer MIN_FONT_SIZE   = new Integer(44);

    private static final Integer MAX_FONT_SIZE   = new Integer(50);

    private static final String NUMERIC_CHARS    = "123456789";// No numeric 0

    private static final String UPPER_ASCII_CHARS= "ABCDEFGHJKLMNPQRSTUVWXYZ";// No upper O I

    private static final String LOWER_ASCII_CHARS= "abcdefghjklmnpqrstuvwxyz";// No lower o i

    /**
     * Singleton instance of this class
     */
    private static MVNCaptchaService instance = new MVNCaptchaService();

    private ArrayList textPasterList;

    private ArrayList backgroundGeneratorList;

    private ArrayList fontGeneratorList;

    /**
     * Private constructor to prevent instantiation
     */
    private MVNCaptchaService() {
    }

    public static MVNCaptchaService getInstance() {
        return instance;
    }

    protected void buildInitialFactories() {
        textPasterList = new ArrayList();
        backgroundGeneratorList = new ArrayList();
        fontGeneratorList = new ArrayList();

        textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.GREEN));
        textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.GREEN));
        textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.RED));
        textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.RED));
        textPasterList.add(new SimpleTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.BLUE));
        textPasterList.add(new RandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, Color.BLUE));

        backgroundGeneratorList.add(new EllipseBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT));
        backgroundGeneratorList.add(new UniColorBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT));
        backgroundGeneratorList.add(new MultipleShapeBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT));
        backgroundGeneratorList.add(new FunkyBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT));
        backgroundGeneratorList.add(new GradientBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, Color.WHITE, Color.BLACK));
        backgroundGeneratorList.add(new GradientBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, Color.BLACK, Color.WHITE));
        backgroundGeneratorList.add(new GradientBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, Color.ORANGE, Color.MAGENTA));

        fontGeneratorList.add(new TwistedAndShearedRandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));
        //fontGeneratorList.add(new TwistedRandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// link character too much
        //fontGeneratorList.add(new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// to easy to read
        //fontGeneratorList.add(new DeformedRandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE));// to small font

        // no char upper O, char lower o and numerric 0 because user cannot answer
        WordGenerator words = new RandomWordGenerator(NUMERIC_CHARS + UPPER_ASCII_CHARS);

        for (Iterator fontIter = fontGeneratorList.iterator(); fontIter.hasNext(); ) {
            FontGenerator font = (FontGenerator)fontIter.next();
            for (Iterator backIter = backgroundGeneratorList.iterator(); backIter.hasNext(); ) {
                BackgroundGenerator back = (BackgroundGenerator)backIter.next();
                for (Iterator textIter = textPasterList.iterator(); textIter.hasNext(); ) {
                    TextPaster parser = (TextPaster)textIter.next();

                    WordToImage word2image = new ComposedWordToImage(font, back, parser);
                    ImageCaptchaFactory factory = new GimpyFactory(words, word2image);
                    addFactory(factory);
                }
            }
        }
    }

    /**
     * Write the captcha image of current user to the servlet response
     *
     * @param request HttpServletRequest
     * @param response HttpServletResponse
     * @throws IOException
     */
    public void writeCaptchaImage(HttpServletRequest request, HttpServletResponse response)
        throws IOException, AssertionException, DatabaseException, AuthenticationException {

        BufferedImage image = OnlineUserManager.getInstance().getOnlineUser(request).getCurrentCaptchaImage();
        if (image == null) {
            return;
        }

        OutputStream outputStream = null;
        try {
            outputStream = response.getOutputStream();
            response.setContentType("image/jpeg");

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outputStream);
            encoder.encode(image);

            outputStream.flush();
            outputStream.close();
            outputStream = null;// no close twice
        } catch (IOException ex) {
            throw ex;
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException ex) { }
            }
        }
    }

    /*
    public void writeTestCaptchaImage(HttpServletRequest request, HttpServletResponse response)
        throws IOException {

        ImageCaptcha imageCaptcha = getNextImageCaptcha();
        BufferedImage image = (BufferedImage)imageCaptcha.getChallenge();

        OutputStream outputStream = null;
        try {
            outputStream = response.getOutputStream();
            response.setContentType("image/jpeg");

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outputStream);
            encoder.encode(image);

            outputStream.flush();
            outputStream.close();
            outputStream = null;// no close twice
        } catch (IOException ex) {
            throw ex;
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException ex) { }
            }
            imageCaptcha.disposeChallenge();
        }
    }

    private void testCaptchaImage(String folder) {
        if (folder == null) {
            folder = "c:\\";
        }
        if (folder.endsWith("\\") == false) {
            folder = folder + "\\";
        }

        WordGenerator words = new RandomWordGenerator("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");

        for (Iterator fontIter = fontGeneratorList.iterator(); fontIter.hasNext(); ) {
            FontGenerator font = (FontGenerator)fontIter.next();
            for (Iterator backIter = backgroundGeneratorList.iterator(); backIter.hasNext(); ) {
                BackgroundGenerator back = (BackgroundGenerator)backIter.next();
                for (Iterator textIter = textPasterList.iterator(); textIter.hasNext(); ) {
                    TextPaster parser = (TextPaster)textIter.next();

                    WordToImage word2image = new ComposedWordToImage(font, back, parser);
                    ImageCaptchaFactory factory = new GimpyFactory(words, word2image);

                    ImageCaptcha imageCaptcha = factory.getImageCaptcha();
                    String filename = "TestCaptcha_" + getClassName(font) + "_" + getClassName(back) + "_" + getClassName(parser) + ".jpg";
                    try {
                        ImageUtil.writeJpegImage_Sun((BufferedImage) imageCaptcha.getChallenge(), folder + filename);
                    } catch (IOException ex) {
                        ex.printStackTrace();
                        return;
                    }
                }
            }
        }
    }

    private String getClassName(Object obj) {
        String fullName = obj.getClass().getName();
        int dotIndex = fullName.lastIndexOf('.');
        if (dotIndex == -1) {
            return fullName;
        }
        return fullName.substring(dotIndex + 1);
    }

    public static void main(String[] args) throws IOException {
        MVNCaptchaService.getInstance().testCaptchaImage("c:\\temp\\testcaptcha");
    }
    */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人7777| 成人精品鲁一区一区二区| 国产精品福利电影一区二区三区四区| 欧美三级韩国三级日本三斤| 成人精品国产免费网站| 国产凹凸在线观看一区二区| 国产凹凸在线观看一区二区| 成人精品电影在线观看| 91视视频在线观看入口直接观看www| 国产精品一级片在线观看| 成人黄色在线网站| 91亚洲精品乱码久久久久久蜜桃| 色狠狠色噜噜噜综合网| 欧美日韩中文字幕精品| 91精品国产91久久综合桃花 | 91成人国产精品| 欧美性生活影院| 日韩欧美在线影院| 国产亚洲自拍一区| 亚洲精品免费视频| 亚洲精品欧美激情| 天天影视网天天综合色在线播放| 日韩中文欧美在线| 成人综合婷婷国产精品久久蜜臀 | 日韩一区二区免费在线观看| 久久综合狠狠综合久久激情| 亚洲柠檬福利资源导航| 午夜影视日本亚洲欧洲精品| 久久精品国产亚洲a| www.亚洲激情.com| 91精品国产免费| 久久久久久综合| 亚洲第一激情av| 国产精品白丝av| 欧美午夜精品电影| 国产日韩在线不卡| 亚洲a一区二区| 成人黄色在线网站| 777亚洲妇女| 亚洲色图在线看| 蜜桃视频一区二区三区 | 亚洲午夜免费电影| 日本欧美一区二区三区乱码| 国产精品久久久久永久免费观看| 亚洲综合小说图片| 国产精品一区二区三区网站| 欧美精选在线播放| 亚洲色图色小说| 国产宾馆实践打屁股91| 日韩欧美色综合网站| 亚洲一区二区三区四区在线| 成人综合婷婷国产精品久久| 精品国产免费视频| 爽好久久久欧美精品| 色香蕉成人二区免费| 欧美高清在线精品一区| 九九精品一区二区| 51久久夜色精品国产麻豆| 一区二区三区中文字幕在线观看| 国产一本一道久久香蕉| 日韩欧美中文字幕一区| 亚洲777理论| 欧美系列一区二区| 亚洲另类春色校园小说| 成人av电影免费在线播放| 国产亚洲一区二区三区四区 | 国产在线精品不卡| 日韩欧美高清dvd碟片| 首页国产欧美久久| 欧美精选一区二区| 天堂成人国产精品一区| 欧美精品vⅰdeose4hd| 天堂蜜桃91精品| 欧美一区二区三区视频免费播放| 伊人夜夜躁av伊人久久| 欧美亚洲自拍偷拍| 亚洲午夜精品久久久久久久久| 欧洲亚洲精品在线| 亚洲成av人片一区二区三区| 91超碰这里只有精品国产| 日韩精品乱码免费| 亚洲电影视频在线| 欧美一区二区性放荡片| 日本视频一区二区| 欧美videofree性高清杂交| 视频一区二区不卡| 欧美三级韩国三级日本三斤| 日韩一区精品字幕| www精品美女久久久tv| 不卡的av中国片| 一区二区三区国产精华| 欧美精品黑人性xxxx| 精品一区免费av| 亚洲三级在线看| 欧美日韩国产精品自在自线| 九九精品一区二区| 国产精品你懂的在线| 欧美日韩一区在线观看| 久久99久久99精品免视看婷婷 | 国产一区二区福利| 亚洲欧美色综合| 欧美一区二区三区的| 国产伦精品一区二区三区视频青涩 | 欧美三电影在线| 蜜桃一区二区三区四区| 国产精品国产馆在线真实露脸| 在线观看国产日韩| 国产综合久久久久影院| 亚洲在线一区二区三区| 久久看人人爽人人| 欧美色窝79yyyycom| 国产精品一区二区久久精品爱涩| 成人免费小视频| 欧美成人aa大片| 日本韩国视频一区二区| 国产大陆a不卡| 午夜精品福利一区二区三区蜜桃| 久久99久久久欧美国产| 亚洲欧美日韩国产成人精品影院| 精品少妇一区二区三区 | 欧美丰满高潮xxxx喷水动漫| 国产高清亚洲一区| 香蕉乱码成人久久天堂爱免费| 国产欧美一区二区精品婷婷| 欧美日韩精品二区第二页| www.欧美色图| 国产乱人伦偷精品视频免下载| 亚洲国产日韩一级| 亚洲欧洲制服丝袜| 中文字幕乱码久久午夜不卡| 欧美成人性福生活免费看| 欧美日韩精品综合在线| 色域天天综合网| 97精品久久久久中文字幕| 国产精品一区二区在线看| 九九久久精品视频| 怡红院av一区二区三区| 亚洲日本乱码在线观看| 国产精品欧美极品| 欧美本精品男人aⅴ天堂| 欧美精品久久99久久在免费线| 欧美亚洲一区二区在线| 一本大道久久a久久综合婷婷| 韩国午夜理伦三级不卡影院| 亚洲精品老司机| 亚洲免费高清视频在线| 亚洲美女一区二区三区| 亚洲三级小视频| 中文字幕中文字幕在线一区 | 2024国产精品| 精品国产sm最大网站免费看| 日韩午夜av一区| 日韩一区二区在线播放| 91精品福利视频| 欧美手机在线视频| 91精品国产综合久久精品麻豆| 精品视频免费在线| 欧美一区二区三区视频免费播放| 欧美午夜精品久久久久久孕妇 | 欧美日韩日本视频| 欧美日韩综合色| 欧美一区二区三区影视| 日韩午夜激情视频| 久久久亚洲综合| 日韩一区在线看| 一区二区三区在线不卡| 亚洲成人手机在线| 蜜臀精品久久久久久蜜臀| 极品少妇xxxx精品少妇偷拍| 高清视频一区二区| 91女厕偷拍女厕偷拍高清| 欧美三级午夜理伦三级中视频| 欧美一区二区在线观看| 国产亚洲欧美在线| 一区二区三区四区不卡视频| 午夜国产精品一区| 国产资源精品在线观看| 91色九色蝌蚪| 欧美一区二区三区视频| 国产精品视频麻豆| 亚洲va欧美va人人爽午夜 | 91无套直看片红桃| 欧美精品久久99久久在免费线| 久久久精品免费网站| 夜夜嗨av一区二区三区网页| 蜜臀91精品一区二区三区| 99久久精品免费看国产免费软件| 欧美日韩精品一区二区天天拍小说 | 首页亚洲欧美制服丝腿| 粉嫩欧美一区二区三区高清影视| 欧美在线你懂的| 久久亚洲影视婷婷| 亚洲第一成年网| 成人免费高清视频| 日韩一区二区免费在线电影| 亚洲精品自拍动漫在线| 国产91精品免费| 日韩免费一区二区| 亚洲妇女屁股眼交7| 成年人网站91|