吾生于乙亥年,于世虚度二十春秋是也。小生不才,明知文拙脑蠢,却喜挥笔泼墨,畅叙幽情。才疏学浅,未能熟读圣贤之书,以至学识浅薄,明然众人也,哀哉!
今日给大家分享一个Java制作二位的代码,目前科技的发展,导致二维码越来越流行。所以给大家分享一个简单二维码制作,不过这类似于一个单机的二维码。这个需要导入一个Qrcode_swetake.jar的架构包,这是用来进行解码和编码的。网上可以直接下载,也可以找我要。接来下来只部分代码分享,后面会附上完整的代码及结果。
设置二维码中的内容。
String str = new String("小生不才,明知文拙脑蠢,却喜挥笔泼墨,畅叙幽情。才疏学浅,未能熟读圣贤之书,以至学识浅薄" +"明然众人也,哀哉!");
设置版本号,即二维码的模块,也是就是二维码的大小,同时设置编码类型和容错率。容错率就是遮住一点也不影响二维码的扫描。
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeVersion(11);
qrcode.setQrcodeEncodeMode('B');
//设置容错率:L(7%) M(15%) Q(25%) H(30%)
qrcode.setQrcodeErrorCorrect('m');
下面就是使用画图工具画图,设置画图背景及画笔颜色。
BufferedImage bufImage = new BufferedImage(190, 190, BufferedImage.TYPE_3BYTE_BGR);
//拿画图工具
Graphics2D garp = bufImage.createGraphics();
//设置背景颜色为白色
garp.setBackground(Color.WHITE);
//清空一片区域
garp.clearRect(0, 0,190, 190);
//设置画笔颜色
garp.setColor(Color.BLACK);
//garp.fillRect(50,50, 50, 50);画小方块
下面就不详细解释了,直接附上完整代码,完整代码如下:
package com.Erweima;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
public class Erweima {
public static void main(String[] args) {
String str = new String("小生不才,明知文拙脑蠢,却喜挥笔泼墨,畅叙幽情。才疏学浅,未能熟读圣贤之书,以至学识浅薄" +"明然众人也,哀哉!");
Qrcode qrcode = new Qrcode();
//设置版本号,版本号1(21*21模块)-40(177*177模块)
qrcode.setQrcodeVersion(11);
//设置编码类型
qrcode.setQrcodeEncodeMode('B');
//设置容错率:L(7%) M(15%) Q(25%) H(30%)
qrcode.setQrcodeErrorCorrect('m');
//在内存中创建一个图片对象
BufferedImage bufImage = new BufferedImage(190, 190, BufferedImage.TYPE_3BYTE_BGR);
//拿画图工具
Graphics2D garp = bufImage.createGraphics();
//设置背景颜色为白色
garp.setBackground(Color.WHITE);
//清空一片区域
garp.clearRect(0, 0,190, 190);
//设置画笔颜色
garp.setColor(Color.BLACK);
//garp.fillRect(50,50, 50, 50);画小方块
//将字符串变成字节数字,若出现乱码,则传递参数utf-8
byte[] content = str.getBytes();
//将字节数组编程二维码的格式的二维数组Boolean
boolean[][] results = qrcode.calQrcode(content);
int pix=2;//设置偏移量,提高识别度
for(int i=0;i<results.length;i++){
for(int j=0;j<results.length;j++){
if(results[j][i]){
garp.fillRect(j*3+pix, i*3+pix, 3, 3);
}
}
}
try {
BufferedImage bufLogo = ImageIO.read(new File("D:\\图片\\psd和ps图片\\2.png"));
garp.drawImage(bufLogo, 80, 80, 30, 30, null);
ImageIO.write(bufImage, "JPEG", new File("D:\\实训所用\\第二次Java\\1109 二维码的生成与解码完整详解\\1.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果如下;可以直接扫描就可以看到其中的内容,这个比较简单,还望各位大神不要见笑。