java实现二维码的生成和解析:QRCode、zxing 两种方式
2020-12-13 03:58
标签:导入 pre gty dimens asics set http float exception 第一种:QRCode.jar,使用QRCode生成和解析二维码 1.导入jar包
2.代码 (1)QRCodeUtil .java (2)TwoDimensionCodeImage .java (3)Test .java 第二种:借助Google提供的ZXing Core工具包 1.maven依赖 2.代码 (1)ZXingUtil .java (2)LogoUtil .java (3)test.java (效果图) java实现二维码的生成和解析:QRCode、zxing 两种方式 标签:导入 pre gty dimens asics set http float exception 原文地址:https://www.cnblogs.com/codingcc1/p/11099788.html 1 import com.swetake.util.Qrcode;
2 import jp.sourceforge.qrcode.QRCodeDecoder;
3
4 import javax.imageio.ImageIO;
5 import java.awt.*;
6 import java.awt.image.BufferedImage;
7 import java.io.File;
8
9 public class QRCodeUtil {
10 /**
11 *加密: 文字信息 ->二维码.png
12 * @param content 文字信息
13 * @param imgPath 二维码路径
14 * @param imgType 二维码类型:png
15 * @param size 二维码尺寸
16 * @throws Exception
17 */
18 public void encoderQRCode(String content,String imgPath,String imgType,int size) throws Exception{
19 //BufferedImage :内存中的一张图片
20 BufferedImage bufImg = qRcodeCommon(content,imgType,size);
21
22 File file = new File(imgPath);// "src/二维码.png" --> 二维码.png
23
24 //生成图片
25 ImageIO.write(bufImg, imgType, file);
26 }
27
28 /**
29 *产生一个二维码的BufferedImage
30 * @param content 二维码隐藏信息
31 * @param imgType 图片格式
32 * @param size 图片大小
33 * @return
34 */
35 private BufferedImage qRcodeCommon(String content, String imgType, int size) throws Exception {
36 BufferedImage bufImg =null;
37 //Qrcode对象:字符串->boolean[][]
38 Qrcode qrCodeHandler = new Qrcode();
39 //设置二维码的排错率:7% L
1 import jp.sourceforge.qrcode.data.QRCodeImage;
2
3 import java.awt.image.BufferedImage;
4
5 public class TwoDimensionCodeImage implements QRCodeImage {
6 BufferedImage bufImg; //将图片加载到内存中
7 public TwoDimensionCodeImage(BufferedImage bufImg) {
8 this.bufImg = bufImg;
9 }
10 public int getWidth() {
11 return bufImg.getWidth();
12 }
13
14 public int getHeight() {
15 return bufImg.getHeight();
16 }
17
18 public int getPixel(int x, int y) {
19 return bufImg.getRGB(x,y);
20 }
21 }
1 public class Test {
2 public static void main(String[] args) throws Exception{
3 //生成二维码
4 /*
5 * 生成图片的路径 src/二维码.png
6 * 文字信息、网址信息 : "helloworld"
7 */
8 String imgPath = "e:\\二维码2.png";
9 String content = "http://baidu.com"; //扫描二维码后,网页跳转
10
11 //生成二维码
12 /*
13 * 加密: 文字信息 ->二维码
14 * 解密: 二维码 -> 文字信息
15 */
16 QRCodeUtil qrUtil = new QRCodeUtil();
17 //加密: 文字信息 ->二维码
18 qrUtil.encoderQRCode(content, imgPath, "png", 17);
19
20 // TwoDimensionCode handler = new TwoDimensionCode();
21 // handler.encoderQRCode(content, imgPath, "png", 7);
22
23
24 // //解密: 二维码 -> 文字信息
25 String imgContent = qrUtil.decoderQRCode(imgPath) ;
26 System.out.println(imgContent);
27
28
29 }
30 }
1 dependency>
2 groupId>com.google.zxinggroupId>
3 artifactId>coreartifactId>
4 version>3.4.0version>
5 dependency>
6 dependency>
7 groupId>com.google.zxinggroupId>
8 artifactId>javaseartifactId>
9 version>3.3.1version>
10 dependency>
1 import com.google.zxing.*;
2 import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
3 import com.google.zxing.common.BitMatrix;
4 import com.google.zxing.common.HybridBinarizer;
5 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
6 import jp.sourceforge.qrcode.util.Color;
7
8 import javax.imageio.ImageIO;
9 import java.awt.image.BufferedImage;
10 import java.io.File;
11 import java.util.HashMap;
12 import java.util.Hashtable;
13 import java.util.Map;
14
15 public class ZXingUtil {
16 public static void encodeImg(String imgPath,String format,String content,int width,int height,String logo) throws Exception {
17 Hashtable
1 import javax.imageio.ImageIO;
2 import java.awt.*;
3 import java.awt.geom.RoundRectangle2D;
4 import java.awt.image.BufferedImage;
5 import java.io.File;
6 import java.io.IOException;
7
8 public class LogoUtil {
9 //传入logo、二维码 ->带logo的二维码
10 public static BufferedImage logoMatrix( BufferedImage matrixImage,String logo ) throws IOException {
11 //在二维码上画logo:产生一个 二维码画板
12 Graphics2D g2 = matrixImage.createGraphics();
13
14 //画logo: String->BufferedImage(内存)
15 BufferedImage logoImg = ImageIO.read(new File(logo));
16 int height = matrixImage.getHeight();
17 int width = matrixImage.getWidth();
18 //纯logo图片
19 g2.drawImage(logoImg, width * 2 / 5, height * 2 / 5, width * 1 / 5, height * 1 / 5, null);
20
21 //产生一个 画 白色圆角正方形的 画笔
22 BasicStroke stroke = new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
23 //将画板-画笔 关联
24 g2.setStroke(stroke);
25 //创建一个正方形
26 RoundRectangle2D.Float round = new RoundRectangle2D.Float(width * 2 / 5, height * 2 / 5, width * 1 / 5, height * 1 / 5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
27 g2.setColor(Color.WHITE);
28 g2.draw(round);
29
30 //灰色边框
31 BasicStroke stroke2 = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
32 g2.setStroke(stroke2);
33 //创建一个正方形
34 RoundRectangle2D.Float round2 = new RoundRectangle2D.Float(width * 2 / 5 + 2, height * 2 / 5 + 2, width * 1 / 5 - 4, height * 1 / 5 - 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
35 // Color color = new Color(128,128,128) ;
36 g2.setColor(Color.GRAY);
37 g2.draw(round2);
38
39 g2.dispose();
40 matrixImage.flush();
41
42 return matrixImage;
43 }
44 }
1 import java.io.File;
2
3 public class test {
4 public static void main(String[] args) throws Exception {
5 String imgPath = "src/二维码12.png";
6 String content = "helloworld你好";
7 String logo = "src/logo.png";
8 //加密:文字信息->二维码
9 ZXingUtil.encodeImg(imgPath, "png",content, 430, 430,logo);
10 //解密:二维码 ->文字信息
11 ZXingUtil.decodeImg(new File(imgPath));
12 }
13 }
上一篇:IE9的window.showmodaldialog显示问题
下一篇:JS高级特性
文章标题:java实现二维码的生成和解析:QRCode、zxing 两种方式
文章链接:http://soscw.com/essay/28635.html