create CAPTCHA Image - Java 2D Graphics

Java examples for 2D Graphics:Image Captcha

Description

create CAPTCHA Image

Demo Code

/*/*from w w  w. j  av  a  2 s.  c  om*/
 * Copyright (c) 2015, TypeZero Engine (game.developpers.com)
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * Neither the name of TypeZero Engine nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */
import java.awt.*;
import java.awt.image.BufferedImage;
import java.nio.ByteBuffer;

public class Main{
    public static void main(String[] argv) throws Exception{
        String word = "java2s.com";
        System.out.println(createCAPTCHA(word));
    }
    private final static int IMAGE_WIDTH = 160;
    private final static int IMAGE_HEIGHT = 80;
    private final static int TEXT_SIZE = 25;
    private final static String FONT_FAMILY_NAME = "Verdana";

    /**
     * CAPTCHA image create
     *
     * @param word
     *          text word
     * @return BufferedImage
     */
    private static BufferedImage createImage(String word) {
        BufferedImage bImg = null;

        try {
            // image create
            bImg = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT,
                    BufferedImage.TYPE_INT_ARGB_PRE);
            Graphics2D g2 = bImg.createGraphics();

            // set backgroup color
            g2.setColor(Color.BLACK);
            g2.fillRect(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT);

            // set font family, color, size, antialiasing
            Font font = new Font(FONT_FAMILY_NAME, Font.BOLD, TEXT_SIZE);
            g2.setFont(font);
            g2.setColor(Color.WHITE);
            g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

            // word drawing
            char[] chars = word.toCharArray();
            int x = 10;
            int y = IMAGE_HEIGHT / 2 + TEXT_SIZE / 2;

            for (int i = 0; i < chars.length; i++) {
                char ch = chars[i];
                g2.drawString(String.valueOf(ch), x + font.getSize() * i, y
                        + (int) Math.pow(-1, i) * (TEXT_SIZE / 6));
            }

            // resource dispose
            g2.dispose();
        } catch (Exception e) {
            e.printStackTrace();
            bImg = null;
        }

        return bImg;
    }
}

Related Tutorials