Java实战之用Spring开发条形码和验证码

一、条形码

代码如下:

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;

public class Text extends JFrame {
    private static final int WIDTH=300;//窗口的宽度
    private static final int HEIGHT=400;//窗口的高度
    private static final int LINES=120;//内部的线条数量
    private static final int SPACE=10;//线条与线条之间的间距
    private static JFrame jFrame=null;

    public static void main(String[] args) {
        initialize();
    }

    private static void initialize(){//初始化窗口
        jFrame=new JFrame("条形码");
        jFrame.setSize(WIDTH,HEIGHT);
        jFrame.setLayout(null);
        JLabel jLabel=new JLabel();
        jLabel.setBounds(0,0,WIDTH,80);
        jLabel.setIcon(new ImageIcon(setCode()));
        jFrame.add(jLabel);
        jFrame.setVisible(true);
        jFrame.setLocationRelativeTo(null);
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    private static BufferedImage setCode() {
        Random random = new Random();
        BufferedImage bufferedImage = new BufferedImage(WIDTH, 80, BufferedImage.TYPE_INT_RGB);//创建一个图片画板
        Graphics g = bufferedImage.getGraphics();//得到画笔
        g.setColor(Color.white);//设置画笔颜色
        g.fillRect(0, 0, WIDTH, 80);//规定画笔的一个范围
        g.setColor(Color.black);//这个是设置线条的颜色
        for(int i=0;i<LINES;i++){
            int row=random.nextInt(WIDTH)+SPACE;
            g.drawLine(row,0,row,HEIGHT);
        }
        return bufferedImage;
    }
}

效果如下:

二、验证码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.Random;

public class Text extends JFrame{
    private final static char[] words=("1234567890" +
            "abcdefghijklmnopqrstuvwxyz" +
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

    private final static int WORDLENGTH=4;
    private final static int WIDTH=200;
    private final static int HEIGHT=100;
    private final static int STAR=200;
    private static Text t=null;
    private static TextField textFile=null;
    private static Object[] obj=null;

    private static Object[] drawCode(){
        BufferedImage bufferedImage=new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
        Graphics g=bufferedImage.getGraphics();
        char[] selectWord=new char[4];
        g.setColor(Color.LIGHT_GRAY);
        g.fillRect(0,0,WIDTH,HEIGHT);
        Random random=new Random();
        for(int i=0;i<WORDLENGTH;i++){
            int n=random.nextInt(words.length);
            selectWord[i]=words[i];
            g.setFont(new Font("微软雅黑",0,random.nextInt(20)+40));
            g.setColor(setRandomColor());
            g.drawString(words[n]+"",i*WIDTH/WORDLENGTH,HEIGHT/2+10);
        }
        for(int i=0;i<STAR;i++){
            g.setColor(setRandomColor());
            g.setFont(new Font("楷书",0,40));
            g.drawOval(random.nextInt(WIDTH),random.nextInt(HEIGHT),3, 3);
        }
        return new Object[]{selectWord,bufferedImage};
    }

    private static Color setRandomColor(){
        Random colorRandom=new Random();
        return new Color(colorRandom.nextInt(256),colorRandom.nextInt(256),colorRandom.nextInt(256));
    }

    public static void main(String[] args) {
        t=new Text();
        t.setLocationRelativeTo(null);
        t.setSize(WIDTH,200);
        t.setLayout(null);
        t.add(setLabel());
        t.add(setButton());
        t.add(setTextField());
        t.setVisible(true);
        t.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    private static JLabel setLabel(){
        JLabel jLabel=new JLabel();
        obj=drawCode();
        jLabel.setIcon(new ImageIcon((BufferedImage)obj[1]));
        jLabel.setBounds(0,0,WIDTH,HEIGHT);
        jLabel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                jLabel.setIcon(new ImageIcon((BufferedImage)drawCode()[1]));
            }
        });
        return jLabel;
    }

    private static TextField setTextField(){
        textFile=new TextField();
        textFile.setFont(new Font("华文行楷",0,20));
        textFile.setBounds(5,120, 100,30);
        return textFile;
    }

    private static JButton setButton(){
        JButton jButton=new JButton("检测");
        jButton.setBounds(110,120, 70,30);
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println(textFile.getText().equals(obj[0]));
            }
        });
        return jButton;
    }
}

效果如下:
验证码这里是因为没有设置好字符编码的原因,让中文字符无法在窗口内不显示

验证码就比条形码难以点点,但是基本的编写思想都是差不多的,
但最难的还是在二维码上,编写二维码就需要要求编写者的算法能力足够的扎实,而且还要有足够丰富的Java功底

到此这篇关于Java实战之用Spring开发条形码和验证码的文章就介绍到这了,更多相关Java Spring开发条形码和验证码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详细介绍Java阿里云的短信验证码实现

    阿里云手机短信验证码 第一步 登录阿里云开放平台 1.进入阿里云开放平台---->点击控制台 2.点击AccessKey管理 3.点击之后会弹出提示,选择开始使用子用户 4.新建一个用户组,然后按要求填写即可 5.创建一个用户,按要求填写内容,勾选编程访问 6.会得到AccessKey(id,密码) 要将这个账号保存下来! //用户登录名称 ==================== //AccessKey ID ==================== //AccessKey Secret ==

  • Java 生成随机验证码图片的示例

    1.情景展示 登录时,生成随机验证码图片,如何实现?  2.原因分析 后台生成验证码并生成图片返回至前台 3.解决方案 导包 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.Ser

  • javaWeb如何实现随机图片验证码详解

    实现步骤 1:Java后台生成一张随机数字/字母/汉字验证码的图片. 2:存入redis或者session. 3:用户输入验证码跟redis取出数据做比对. 图片生成工具类 public class RandomValidateCodeUtil { public static final String RANDOMCODEKEY = "RANDOMVALIDATECODEKEY";//放到session中的key private String randString = "01

  • 使用java + OpenCV破解顶象面积验证码的示例

    前言 我们又来破解验证码啦,今天上场的是–顶象面积验证码 根据场景来看,我们需要根据图片中分隔好的区域找到面积最大的一块来点击它. 那么我们把它拆分成以下几个步骤: 检测出图中标记的点将检测出来的点连成线根据线分割出的区域计算各区域面积,并得到最大面积在该区域面积中选取一个坐标点作为结果 一.检测出图中标记的点 第一个问题,怎么检测出图片中被标记出来的点? 这里使用哈里斯角点检测,这里采用OpenCV中的cornerHarris()来实现. 参考下面两篇文章,感兴趣的话可以阅读一下: Harri

  • Java生成条形码code128(亲测有效)

    生成code 128条形码工具类 maven依赖   <dependency>             <groupId>net.sf.barcode4j</groupId>             <artifactId>barcode4j</artifactId>             <version>2.1</version>         </dependency> gradle依赖 compil

  • java实现动态验证码

    java动态实现验证码,供大家参考,具体内容如下 [实现效果] 点击图片或者文字可以更换验证码 验证码随机生成,由大小写字母和数字组成 验证码字体颜色随机生成,字母角度有偏转 干扰线随机分布 验证码的功能: 防止恶意的表单注册 VerificationCode.java 验证码功能实现 package com.iqqcode.servlet.checkcode; import javax.imageio.ImageIO; import javax.servlet.ServletException

  • java数字和中文算数验证码的实现

    本文介绍了java数字和中文算数验证码的实现,分享给大家,具体如下: 效果图 本文代码 https://gitee.com/tothis/java-record/tree/master/src/main/java/com/example/captcha 中文实现参考 https://gitee.com/whvse/EasyCaptcha.git 数字实现参考 https://www.jb51.net/article/190561.htm 代码如下 中文算法 package com.example

  • java生成图片验证码的示例代码

    给大家分享一款java生成验证码的源码,可设置随机字符串,去掉了几个容易混淆的字符,还可以设置验证码位数,比如4位,6位.当然也可以根据前台验证码的位置大小,设置验证码图片的大小.下边是源码分享,直接看吧,很简单! 创建servlet类 import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServ

  • Java zxing生成条形码和二维吗代码实例

    在如今的生活中,二维码随处可见,二维码的出现既减少了宣传纸张的浪费,又方便了人们的生活.这一篇我来说说 Java 利用第三方 Jar 包 zxing 生成二维码. 依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version> </dependency> <

  • Java创建、识别条形码和二维码方法示例

    前言 条形码(Barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常用于标示物品的生产国.制造厂家.商品名称.生产日期.图书分类号.邮件起止地点.类别.日期等信息,广泛应用于各个领域.常见的包括一维条码(条码).二维条码(二维码).彩色条码,在具体码制上可分为多种不同类型的条码,如UPC(统一产品代码,只能以数字表示).Code 3(能表示字母.数字和其它一些符号共43个字符).Code 128(表示高密度数据,字符串可变长,符号内含校验码).Co

  • 如何使用Java redis实现发送手机验证码功能

    要求: 1.输入手机号,点击发送后随机生成6位数字码,2分钟有效 2.输入验证码,点击验证,返回成功或失败 3.每个手机号每天只能输入3次 代码如下 import redis.clients.jedis.Jedis; import java.util.Random; public class ValidationTest { public static void main(String[] args) { //getValidation("15005076571"); //checkV

  • 使用java + selenium + OpenCV破解腾讯防水墙滑动验证码功能

    * 验证码地址:https://007.qq.com/online.html * 使用OpenCv模板匹配 * 成功率90%左右 * Java + Selenium + OpenCV 产品样例 来吧!展示! 注意!!! · 在模拟滑动时不能按照相同速度或者过快的速度滑动,需要向人滑动时一样先快后慢,这样才不容易被识别. 模拟滑动代码↓↓↓ /** * 模拟人工移动 * @param driver * @param element页面滑块 * @param distance需要移动距离 */ pu

  • Java 在PDF中添加条形码的两种方法

    条形码,是由宽度不等的多个黑条和空白所组成,用以表达一组信息的图形标识符.通过给文档添加条形码,可以直观,快捷地访问和分享一些重要的信息.本文就将通过使用Java程序来演示如何在PDF文档中添加Codebar.Code128A和Code39条形码.除此之外,还可支持创建Code11.Code128B.Code32.Code39 Extended .Code93和Code93 Extended条形码. 使用工具:Free Spire.PDF for Java(免费版) Jar文件获取及导入: 方法

  • java原生动态生成验证码

    本文实例为大家分享了java原生动态生成验证码的具体代码,供大家参考,具体内容如下 需求描述: 为了防止脚本多次请求,很多时候在注册会用到验证码,我们用java实现 一个图片验证的二维码. 项目结构 只有 标记的这三个文件是用到的 CheckServlet核心代码 package lhw.wanlin.checkimg; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servle

随机推荐