Java 条形码 二维码 的生成与解析

本文介绍了Barcode的基本概念,包括一维码和二维码的类型,常见的编码格式如Code39、Code128、EAN、UPC、QR Code,并探讨了它们在不同领域的应用。重点讲解了Google的ZXing库在Java中生成和解码条形码与二维码的方法,以及如何在Web项目中使用扫码枪处理条码信息。
摘要由CSDN通过智能技术生成

Barcode简介

  Barcode是由一组按一定编码规则排列的条,空符号,用以表示一定的字符,数字及符号组成的,一种机器可读的数据表示方式。
  Barcode的形式多种多样,按照它们的外观分类:
    Linear barcode(一维码):它的信息存储量小,仅能存储一个代号,使用时通过这个代号调取计算机网络中的数据。
    Matrix barcode(二维码)。二维码是近几年发展起来的,它能在有限的空间内存储更多的信息,包括文字、图象、指纹、签名等,并可脱离计算机使用。
  你可能认为你对它们都有所了解,因为它们大概都是这个样子的:

       

  但事实上,它们有甚至有可能是这样子的:

       

  我们通常所说的二维码,只是Matrix barcode的一种,叫做QR code。

  Barcode种类繁多,有些编码格式并不常用,即使是ZXing也没有做到所有格式的支持,开发者只需了解就好。
  其中包括:
  一维条码编码格式:
    Code39码(标准39码)、Codabar码(库德巴码)、Code25码(标准25码)、ITF25码(交叉25码)、Matrix25码(矩阵25码)、UPC-A码、UPC-E码、
    EAN-13码(EAN-13国际商品条码)、EAN-8码(EAN-8国际商品条码)、中国邮政码(矩阵25码的一种变体)、Code-B码、MSI码、Code11码、Code93码、ISBN码、ISSN码、
    Code128码(Code128码,包括EAN128码)、Code39EMS(EMS专用的39码)等
  二维条码编码格式:
    PDF417码、Code49码、Code 16k码、Date Matrix码、MaxiCode码(包括 QR Code码)等。

      Code 39、Code 128、EAN、UPC、QR Code是我们生活中能经常见到的几种编码格式,同时ZXing对几种格式都有比较好的支持。
      其中,UPC-A是一种国际通用的编码格式,由12个数字构成,EAN-13是在UPC-A基础上的一种扩充(多了一个数字)。快数一数你身边的薯片的编码是不是13位!如果是的话,它最前边的两个数字是不是“69”?

      在EAN-13的编码体系中,前三位数字表示商品生产商的国家(并不是商品所属公司的国家),中国的编码是690~699,美国是(000~019、030~039、060~139),日本是(450~459、490~499),and so on。
      不同的编码格式通常用在不同的领域,如果你看到了一个Code 39或者Code 128的Barcode,那么这很就可能是一个快递编码,这个时候你就可以去那些提供快递查询的网站查询一下你的快递信息,如果有API提供出来那就更是再好不过了。
      至于QR Code,就是我们经常用手机扫一扫的二维码,表示的信息更是多种多样,并不仅仅是一个url那么简单,至于这些信息如何处理,是我们一会儿将要讨论的内容。

 

一、google的zxing(jar包下载)

  1:条形码的生成与解码(生成的条形码不显示 本身的条码含义,即:条码下方没有数字字母等。如有需要,自行拼接)

  

  
复制代码
 1 import java.awt.image.BufferedImage;
 2 import java.io.File;
 3 import java.io.FileOutputStream;
 4 
 5 import javax.imageio.ImageIO;
 6 
 7 import com.google.zxing.BarcodeFormat;
 8 import com.google.zxing.BinaryBitmap;
 9 import com.google.zxing.LuminanceSource;
10 import com.google.zxing.MultiFormatReader;
11 import com.google.zxing.MultiFormatWriter;
12 import com.google.zxing.Result;
13 import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
14 import com.google.zxing.client.j2se.MatrixToImageWriter;
15 import com.google.zxing.common.BitMatrix;
16 import com.google.zxing.common.HybridBinarizer;
17 
18 public class ZxingEAN13Code {
19     /**
20      * 条形码编码
21      * @param contents
22      * @param width
23      * @param height
24      * @param imgPath
25      */
26     public void encode(String contents, int width, int height, String imgPath) {
27         //保证最小为70*25的大小
28         int codeWidth = Math.max(70, width);
29         int codeHeight = Math.max(25, height);
30         try {
31             //使用EAN_13编码格式进行编码
32             BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
33                     BarcodeFormat.EAN_13, codeWidth, codeHeight, null);
34             //生成png格式的图片保存到imgPath路径
35             MatrixToImageWriter.writeToStream(bitMatrix, "png&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值