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

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日

悬赏问题

  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上