aming12321_ 2022-04-21 09:10 采纳率: 75%
浏览 109
已结题

Java 验证码显示不出来, 就只显示背景色和干扰线 下面是代码

package Response;

import com.alibaba.druid.proxy.jdbc.JdbcParameter;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;

@WebServlet("/demo3")
public class ResponseTest3 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    //创建图形对象
    int width = 40;
    int height = 40;
    BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);

    //美化图片
    //1.创建画笔
    Graphics g = image.getGraphics();
    //2.填充背景颜色
    g.setColor(Color.PINK);
    g.fillRect(0,0,width,height);

    //3.画边框
    g.setColor(Color.blue);
    g.fillRect(0,0,width-1,height-1);

    //4.生成随机数与字母
    String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    //4.1 生成随机角标
    Random random = new Random();
    g.setColor(Color.red);

    for (int i = 1 ; i <= 4 ; i++){
        int index = random.nextInt(s.length());
        char ch = s.charAt(index);
        //写验证码
        g.drawString(ch+"",width/8*i,height/2);
    }

    g.setColor(Color.green);

    //5随机线
    for (int i =0;i<10;i++){
        int width1 = random.nextInt(width);
        int width2 = random.nextInt(width);
        int higth1 = random.nextInt(height);
        int hight2 = random.nextInt(height);
        g.drawLine(width1,higth1,width2,hight2);
    }
    //将图片输出到画面
    ImageIO.write(image,"jpg",resp.getOutputStream());

}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
}

}

img

  • 写回答

2条回答 默认 最新

  • Tokey_W 2022-04-21 21:04
    关注

    那个设置字符颜色应该写在for循环中吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月7日
  • 已采纳回答 4月29日
  • 创建了问题 4月21日

悬赏问题

  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥30 C++行情软件的tick数据如何高效的合成K线