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

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日

悬赏问题

  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用