java 验证码 背景_验证码及验证码透明的背景

本文展示了一个使用Java创建带有透明背景的验证码的代码示例。通过设置BufferedImage的类型和使用Graphics2D来绘制验证码,包括背景、边框、干扰线、随机数字等,并以PNG格式输出图像。
摘要由CSDN通过智能技术生成

不说什么,代码能为我解释。透明的背景重要的一点就是只能在于png格式,而不是jpg格式。

package com.shengdai.gzb.yzmcode.web;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

import javax.imageio.ImageIO;

import org.apache.struts2.convention.annotation.Action;

import org.springframework.stereotype.Controller;

import com.shengdai.base.support.struts.BaseStrutsAction;

@Controller

public class YzmCodeAction extends BaseStrutsAction{

/**

*

*/

private static final long serialVersionUID = 1L;

private static final int WIDTH=120;

private static final int HEIGHT = 30;

public YzmCodeAction() {

super();

}

@

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现验证码功能可以使用Java的AWT和BufferedImage类来生成图像验证码。以下是一个简单的实现示例: ```java import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; public class CaptchaGenerator { private static final int WIDTH = 120; // 图片宽度 private static final int HEIGHT = 40; // 图片高度 private static final int CODE_LENGTH = 4; // 验证码长度 private static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; // 验证码字符集 private static final Random random = new Random(); public static BufferedImage generate() { // 创建图像对象 BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // 填充背景色 g.setColor(Color.WHITE); g.fillRect(0, 0, WIDTH, HEIGHT); // 生成随机验证码 StringBuilder code = new StringBuilder(); for (int i = 0; i < CODE_LENGTH; i++) { char c = CODES.charAt(random.nextInt(CODES.length())); code.append(c); } // 绘制验证码 g.setColor(Color.BLACK); g.setFont(new Font("Arial", Font.BOLD, 20)); for (int i = 0; i < CODE_LENGTH; i++) { char c = code.charAt(i); g.drawString(String.valueOf(c), 20 + i * 25, 25); } // 添加干扰线 g.setColor(Color.GRAY); for (int i = 0; i < 5; i++) { int x1 = random.nextInt(WIDTH); int y1 = random.nextInt(HEIGHT); int x2 = random.nextInt(WIDTH); int y2 = random.nextInt(HEIGHT); g.drawLine(x1, y1, x2, y2); } // 释放资源 g.dispose(); return image; } } ``` 调用`generate()`方法即可生成一个包含随机验证码的BufferedImage对象。可以将该对象输出到HTTP响应中,以便客户端进行验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值