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盘下生成的二维码图片:
现在拿起你的手机扫描上面的二维码,就会跳转到百度的首页了.