随笔记:使用Zxing 生成二维码

来源:互联网 发布:软件著作权登记查询 编辑:程序博客网 时间:2024/06/15 10:58

maven pom文件引入

        <dependency>              <groupId>com.google.zxing</groupId>              <artifactId>core</artifactId>              <version>3.0.0</version>          </dependency>          <dependency>              <groupId>com.google.zxing</groupId>              <artifactId>javase</artifactId>              <version>3.0.0</version>          </dependency> 

测试类

package zxingtest;import java.awt.image.BufferedImage;  import java.io.File;  import java.io.IOException;  import java.nio.file.FileSystems;  import java.nio.file.Path;  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.DecodeHintType;  import com.google.zxing.EncodeHintType;  import com.google.zxing.LuminanceSource;  import com.google.zxing.MultiFormatReader;  import com.google.zxing.MultiFormatWriter;  import com.google.zxing.NotFoundException;  import com.google.zxing.Result;  import com.google.zxing.WriterException;  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 QRCodeTest {      /**      * 生成图像      *       * @throws WriterException      * @throws IOException      */      @Test      public void testEncode() throws WriterException, IOException {          String filePath = "D://";          String fileName = "zxing.png";          int width = 640; // 图像宽度          int height = 640; // 图像高度          String format = "png";// 图像类型          Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();          hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");          BitMatrix bitMatrix = new MultiFormatWriter().encode("https://www.baidu.com",                  BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵          Path path = FileSystems.getDefault().getPath(filePath, fileName);          MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像          System.out.println("输出成功.");      }      /**          * 解析图像      */      @Test      public void testDecode() {          String filePath = "D://zxing.png";          BufferedImage image;          try {              image = ImageIO.read(new File(filePath));              LuminanceSource source = new BufferedImageLuminanceSource(image);              Binarizer binarizer = new HybridBinarizer(source);              BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);              Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();              hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");              Result result = new MultiFormatReader().decode(binaryBitmap);// 对图像进行解码            /*  JSONObject content = JSONObject.parseObject(result.getText());  */            System.out.println("图片中内容:  ");              System.err.println(result);            System.out.println("图片中格式:  ");              System.out.println("encode: " + result.getBarcodeFormat());          } catch (IOException e) {              e.printStackTrace();          } catch (NotFoundException e) {              e.printStackTrace();          }      }  }