更新时间:2023-11-11 11:00:21
你们好,最近小艾特发现有诸多的小伙伴们对于qr code中文翻译,qr code这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、先去下载QRCode要用到的jar包
2、把这2个jar包添加到项目组,如果用到了maven的话,就可以直接在里面引用地址了,两种方式任何一种都可以,只要添加正确。
3、下面开始写代码
4、package com.wmsDemo.QRCode;
5、import java.awt.Color;
6、import java.awt.Graphics2D;
7、import java.awt.image.BufferedImage;
8、import java.io.File;
9、import java.text.SimpleDateFormat;
10、import java.util.Date;
11、import javax.imageio.ImageIO;
12、import com.swetake.util.Qrcode;
13、public class QRCodeEncoderHandler {
14、 public void encoderQRCode(String content, String imgPath) {
15、 try {
16、 Qrcode qrcodeHandler = new Qrcode();
17、 // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
18、 qrcodeHandler.setQrcodeErrorCorrect('H');
19、 qrcodeHandler.setQrcodeEncodeMode('B');
20、 qrcodeHandler.setQrcodeVersion(5);
21、 System.out.println(content);
22、// int imgSize = 67 + 12 * (size - 1);
23、 byte[] contentBytes = content.getBytes("gb2312");
24、 BufferedImage bufImg = new BufferedImage(115, 115,
25、 BufferedImage.TYPE_INT_RGB);
26、 Graphics2D gs = bufImg.createGraphics();
27、 gs.setBackground(Color.WHITE);
28、 gs.clearRect(0, 0, 115, 115);
29、 // 设定图像颜色> BLACK
30、 gs.setColor(Color.BLACK);
31、 // 设置偏移量 不设置可能导致解析出错
32、 int pixoff = 2;
33、 // 输出内容> 二维码
34、 if (contentBytes.length > 0 && contentBytes.length < 800) {
35、 boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
36、 for (int i = 0; i < codeOut.length; i++) {
37、 for (int j = 0; j < codeOut.length; j++) {
38、 if (codeOut[j][i]) {
39、 gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
40、 }
41、 }
42、 }
43、 } else {
44、 System.err.println("QRCode content bytes length = "
45、 + contentBytes.length + " not in [ 0,120 ]. ");
46、 }
47、 gs.dispose();
48、 bufImg.flush();
49、 File imgFile = new File(imgPath);
50、 // 生成二维码QRCode图片
51、 ImageIO.write(bufImg, "png", imgFile);
52、 } catch (Exception e) {
53、 e.printStackTrace();
54、 }
55、 }
56、 /**
57、 * @param args the command line arguments
58、 */
59、 public static void main(String[] args) {
60、 //取当前时间为图片名称 带毫秒的
61、 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS" );
62、 Date d=new Date();
63、 String str=sdf.format(d);
64、 String imgPath = "D:/QRCode/twocode/"+str+".png";
65、 String content= "这是测试";
66、 QRCodeEncoderHandler handler = new QRCodeEncoderHandler();
67、 handler.encoderQRCode(content, imgPath);
68、 System.out.println("imgPath:"+imgPath);
69、 System.out.println("encoder QRcode success");
70、 }
71、 }
72、上面就是qrcode生成二维码的方式了,下面介绍下用zixing生成二维码的方式。
73、package com.wmsDemo.QRCode;
74、import com.google.zxing.common.BitMatrix;
75、import javax.imageio.ImageIO;
76、import java.io.File;
77、import java.io.OutputStream;
78、import java.io.IOException;
79、import java.awt.image.BufferedImage;
80、public final class MatrixToImageWriter {
81、 private static final int BLACK = 0xFF000000;
82、 private static final int WHITE = 0xFFFFFFFF;
83、 private MatrixToImageWriter() {}
84、
85、 public static BufferedImage toBufferedImage(BitMatrix matrix) {
86、 int width = matrix.getWidth();
87、 int height = matrix.getHeight();
88、 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
89、 for (int x = 0; x < width; x++) {
90、 for (int y = 0; y < height; y++) {
91、 image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
92、 }
93、 }
94、 return image;
95、 }
96、 public static void writeToFile(BitMatrix matrix, String format, File file)
97、 throws IOException {
98、 BufferedImage image = toBufferedImage(matrix);
99、 if (!ImageIO.write(image, format, file)) {
100、 throw new IOException("Could not write an image of format " + format + " to " + file);
101、 }
102、 }
103、
104、 public static void writeToStream(BitMatrix matrix, String format, OutputStream stream)
105、 throws IOException {
106、 BufferedImage image = toBufferedImage(matrix);
107、 if (!ImageIO.write(image, format, stream)) {
108、 throw new IOException("Could not write an image of format " + format);
109、 }
110、 }
111、}
112、package com.wmsDemo.QRCode;
113、import java.io.File;
114、import java.util.HashMap;
115、import java.util.Map;
116、import com.google.zxing.BarcodeFormat;
117、import com.google.zxing.EncodeHintType;
118、import com.google.zxing.MultiFormatWriter;
119、import com.google.zxing.common.BitMatrix;
120、public class Test {
121、 /**
122、 * @param args
123、 * @throws Exception
124、 */
125、 public static void main(String[] args){
126、
127、 try {
128、 String content = "这是测试xing二维码生成";
129、// String path = "D:/tt";
130、 String path = "D:/java/apache-tomcat-7.0.47/webapps/wmsDemo/QRCode";
131、 MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
132、 Map hints = new HashMap();
133、 //内容所使用编码
134、 hints.put(EncodeHintType.CHARACTER_SET, "gb2312");
135、 BitMatrix bitMatrix = multiFormatWriter.encode(content,BarcodeFormat.QR_CODE, 200, 200, hints);
136、 //生成二维码
137、 File outputFile = new File(path,"14.jpg");
138、 MatrixToImageWriter.writeToFile(bitMatrix, "jpg", outputFile);
139、 } catch (Exception e) {
140、 e.printStackTrace();
141、 }
142、
143、 }
144、}
145、通过上面的main方法测试可以看到二维码已经生成成功,并且扫描成功,好多参数如果有需要可以自己去设置
以上就是qr code这篇文章的一些介绍,希望对大家有所帮助。