二维码工具ZXing与visual-qr-code的使用

目录

一、Google二维码工具ZXing:

简介:

示例:

二、图片二维码生成工具 visual-qr-code:


一、Google二维码工具ZXing:

简介:

二维码现在是非常的火热,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。现在我们使用Google提供的ZXing开源类库来体验一下二维码的生成与解析。

引入依赖:

<dependency>

    <groupId>com.google.zxing</groupId>

    <artifactId>core</artifactId>

    <version>3.3.0</version>

</dependency>

<dependency>

    <groupId>com.google.zxing</groupId>

    <artifactId>javase</artifactId>

    <version>3.3.0</version>

</dependency>

 

示例:

package com.zzs.zxing;

 

import java.awt.image.BufferedImage;

import java.io.File;

import java.util.HashMap;

import java.util.Map;

 

import javax.imageio.ImageIO;

 

import org.junit.Test;

 

import com.google.zxing.BarcodeFormat;

import com.google.zxing.Binarizer;

import com.google.zxing.BinaryBitmap;

import com.google.zxing.EncodeHintType;

import com.google.zxing.LuminanceSource;

import com.google.zxing.MultiFormatReader;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.Result;

import com.google.zxing.client.j2se.BufferedImageLuminanceSource;

import com.google.zxing.client.j2se.MatrixToImageWriter;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.common.HybridBinarizer;

 

public class ZXingTest {

    /**

     * Google提供的二维码生成

     */

    @Test

    public void test1() throws Exception {

       // 要生成二维码的内容

       String content = "www.baidu.com";

 

       Map hints = new HashMap();

       hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");

 

       // ZxingGoogle提供的关于条码

       MultiFormatWriter multiFormatWriter = new MultiFormatWriter();

       // 二维码的描述对象

       BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);// 这里指明是二维码以及其大小(若要生成条形码等可修改第二个参数)

 

       // 生成的二维码路径

       File file = new File("E://my.jpg");

       MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file);

       System.out.println("执行完毕");

    }

 

    /**

     * Google提供的解析二维码

     */

    @Test

    public void test2() throws Exception {

 

       File file = new File("E:\\code.gif");// 二维码文件

       BufferedImage image = ImageIO.read(file);

 

       LuminanceSource source = new BufferedImageLuminanceSource(image);

       Binarizer binarizer = new HybridBinarizer(source);

       BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);

 

       Map hints = new HashMap();

       hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");

 

       MultiFormatReader formatReader = new MultiFormatReader();

       Result result = formatReader.decode(binaryBitmap, hints);

 

       System.out.println("result = " + result.toString());

       System.out.println("resultFormat = " + result.getBarcodeFormat());

       System.out.println("resultText = " + result.getText());

    }

}


二、图片二维码生成工具 visual-qr-code:

 

visual-qr-code 是开源的图片二维码生成工具,可以创建出精美的二维码

使用示例:

import java.awt.Color;

import java.io.IOException;

 

import org.junit.Test;

 

import com.boat.visualqrcode.VisualQRCode;

 

public class Visual_qr_code_Test {

    @Test

    public void testPOSITIONRECTANGLE() {

       String url = "https://gitee.com/boat824109722/visual-qr-code/tree/master/";

       try {

           VisualQRCode.createQRCode(url, // 二维码内容、网址,必需

                  "E:\\purity.jpg", // 背景图片路径,必需

                  "E:\\qr.png", // 二维码输出路径,必需

                  'H', // 二维码容错等级,必需

                  new Color(2, 85, 43), // 二维码颜色,必需

                  null, // 二维码X轴起点,非必须,默认为图片的左上角

                  null, // 二维码Y轴起点,非必须,默认为图片的左上角

                  null, // 二维码的宽度,非必须,默认为背景图最小边

                  true, // 是否把背景图变成方形,非必须,默认为false不改变图片形状

                  VisualQRCode.POSITION_DETECTION_SHAPE_MODEL_RECTANGLE, // 二维码四个大码眼的形状,目前只支持方形和圆方形

                  VisualQRCode.FILL_SHAPE_MODEL_RECTANGLE);// 二维码点的形状,目前只支持方形和圆形

       } catch (IOException e) {

           e.printStackTrace();

       }

}

 

主要方法:

VisualQRCode.createQRCode(String content,

       String bgPath,

       String outPath,

       char Level,

       Color DF,

       Integer startX,

       Integer startY,

       Integer QRCodeWidth,

       Boolean isDeformation,

       Integer fillPositionDetectionShapeModel,

       Integer fillShapeModel

    );

 

/**

    1content 二维码内容、网址,必需

    2bgPath 背景图片路径,必需

    3outPath 二维码输出路径,必需

    4Level 二维码容错等级,必需

      可选:"L""M""Q""H"

        L水平 7%的字码可被修正

        M水平 15%的字码可被修正

        Q水平 25%的字码可被修正

        H水平 30%的字码可被修正

    5DF 二维码颜色,必需

    startX 二维码X轴起点,非必须,默认为图片的左上角

    startY 二维码Y轴起点,非必须,默认为图片的左上角

    QRCodeWidth 二维码的宽度,非必须,默认为背景图最小边

      二维码的起始X/Y加上QRCodeWidth<=图片的宽/

    6isDeformation 是否把背景图变成方形,非必须,默认为false不改变图片形状

    7fillPositionDetectionShapeModel 二维码四个大码眼的形状,目前只支持方形和圆方形

      可选:

        POSITION_DETECTION_SHAPE_MODEL_RECTANGLE

        POSITION_DETECTION_SHAPE_MODEL_ROUND_RECTANGLE

    8fillShapeModel 二维码点的形状,目前只支持方形和圆形

      可选:

        FILL_SHAPE_MODEL_RECTANGLE

        FILL_SHAPE_MODEL_CIRCLE

*/

 

参考:

https://gitee.com/boat824109722/visual-qr-code

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值