Java 制作二维码

                                     Java制作二维码中间带图标的简单介绍

一:知人论事:这个二维码有啥用,能帮我们做什么?

 答:在日常的登录中,很多次都是用到了二维码扫码登录的案例,所以有必要了解一下二维码的制作过程的,可以简化我们登录的流程,尤其输用户名和密码等操作的.

二:开门见山:简单的说一下如何制作二维码的.

   1:首先要使用的工具有QRcode这个jar包的,这个在我的博客资源里可以下载到的,这个jar并不难找到的,网上有很多的.

找到后加入到自己的工程中就可以了

   2:接下来就是如何实现这个二维码了,PS:(二维码是二维数组,二层循环,二维码就是黑白矩形块,制作出黑白矩形块就可以实现二维码的展示效果了)

   3:源码如下:其中源码中有详细的注释的.

 

 package com.lx.util;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import com.swetake.util.Qrcode;
/**
 *
 * @author lixing
 * 测试二维码扫码登录
 */
public class QRcode {
//1:获取二维码的方法
      public static BufferedImage getQRcode(String content){
//2:将用户的要加密的数据转换成二位数据,二维码就是二维数组,黑正方形就是1,白正方形就是0;
     Qrcode  qrcode=new Qrcode();
    //3:设置编码模式Byte(字节)
     qrcode.setQrcodeEncodeMode('B');
    //4:设置二维码的纠错级别,二维码会被损坏的(损毁多少还会被识别就取决级别)这里设置中级,j纠错级别LMQH级别依次上升
     qrcode.setQrcodeErrorCorrect('M');
    //5:设置二维码的版本号
     qrcode.setQrcodeVersion(15);
    //6:设置返回的类型,这个240是宽的像素,240是高的像素
     BufferedImage image=new BufferedImage(235,235,BufferedImage.TYPE_INT_RGB);
    //7:将要加密的数据内容转换成字节数组,指定编码的格式    
     try {
     byte[] contents=content.getBytes("UTF-8");
    //8:使用Qrcode转换成数据进行转换,1:true,0:false,二维码就是一个二维数组的
     boolean[][] result=qrcode.calQrcode(contents);
    //9:获取画图工具
     Graphics2D graphics=image.createGraphics();
    //10:设置二维码背景色
    graphics.setBackground(Color.WHITE);
    //11:清空之前的二维码的区域
    graphics.clearRect(0, 0, 240, 240);
    //12:设置画笔的颜色
    graphics.setColor(Color.BLACK);
    //13:开始绘画,使用for循环,i代表Y坐标轴,j代表X做标准
    for(int i=0;i<result.length;i++){
    for(int j=0;j<result.length;j++){
    //14:如果外循环是真就画
    if(result[j][i]){
    //15:绘制正方形的
    graphics.fillRect(j*3,i*3,3,3);
    }
    //16:将中间的地方的方块用图片代替,那个Toolkit是使用不了,只能在Swing中绘制窗体的图标的.95,95就是开始绘制的x,y的坐标的起点.95=(240/2-50/2),一个eclipse的图片.
    graphics.drawImage(new ImageIcon("D:\\image\\eclipse.jpg").getImage(),95,95,50,50,null);
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}  
     return image;  
      }
    public static void main(String[] args) throws IOException{
    //16:保存生成的内容的格式 ,这里以链接百度为例
    BufferedImage image =QRcode.getQRcode("http://www.baidu.com");
    //保存图片的格式以及到指定的目录
    ImageIO.write(image,"JPEG",new File("D:\\image","eclipsecode.jpg"));
    }
}

 

  运行截图如下:

 

  二维码的纠错级别

  分有几级,纠错级别越高,整体需要携带的信息越多:L级可纠正约7%错误、M级别可纠正约15%错误、Q级别可纠正约25%错 误、H级别可纠正约30%错误,一般中M级别的就可以的.

Image是一个抽象列,BufferedImage是Image的实现。

Image和BufferedImage的主要作用就是将一副图片加载到内存中。

在D盘下生成的二维码图片:

现在拿起你的手机扫描上面的二维码,就会跳转到百度的首页了.

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道之简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值