JAVA实现多种类型条形码的生成与扫描

Posted mariawang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA实现多种类型条形码的生成与扫描相关的知识,希望对你有一定的参考价值。

简介:条形码是一种可视化、机器可读的数据,这些数据通常描述了携带该条码的物品的相关信息。条形码已经广泛被应用在商品流通,图书管理,邮政管理和银行系统等领域。在这篇文章中,将介绍如何生成和扫描一些常见的一维和二维条形码。

 

所需工具:

Free Spire.Barcode for Java

Intellij IDEA

 

下面是免费版本支持的条形码类型列表:

 

条形码类型

生成

扫描

CODABAR

CODE_11

CODE_39

CODE_39_EXTENDED

CODE_93

CODE_93_EXTENDED

CODE_128

EAN_8

EAN_13

EAN_128

χ

EAN_14

SCC_14

POST_NET

χ

QR_CODE

χ

P.S. 想要更多条形码类型,请参考使用Spire.Barcode for Java 商业版。

 

Barcode生成:

生成条形码涉及到两个重要的类,一个是BarcodeSettings,另一个是BarcodeCenerator。BarcodeSettings是用来定制条形码的特定类型,数据,大小,颜色等。BarcodeCenerator以BarcodeSettings为基础,用来创建图像数据。上表所支持的部分条形码的生成如下所示:

 

Codebar:

public class CODABAR {

    public static void main(String[] args) throws Exception {
        //创建BarcodeSettings实例
        BarcodeSettings settings = new BarcodeSettings();
        //设置条形码数据
        settings.setData("2030405060");
        //设置符号属性
        settings.setType(BarCodeType.CODABAR);
        //设置底部显示文本
        settings.setShowTextOnBottom(true);
        //设置边框可见
        settings.hasBorder(true);
        //设置CodabarStartChar和CodabarStopChar
        settings.setCodabarStartChar(CodabarChar.B);
        settings.setCodabarStopChar(CodabarChar.D);
        //创建条形码生成器对象
        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
        //从条形码生成器中获取图像
        BufferedImage bufferedImage = barCodeGenerator.generateImage();
        //保存图像
        ImageIO.write(bufferedImage,"png",new File("CODABAR.png"));
    }
}

运行效果:

 技术图片

Code11:

public class CODE_11 {

    public static void main(String[] args) throws IOException {
        //创建BarcodeSettings实例
        BarcodeSettings settings = new BarcodeSettings();
        //设置条形码数据
        settings.setData("12345-67890");
        //设置符号属性
        settings.setType(BarCodeType.CODE_11);
        //设置底部文本
        settings.setShowTextOnBottom(true);
        //设置边框可见
        settings.hasBorder(true);
        //创建条码生成器对象
        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
        //从条码生成期中获取图像
        BufferedImage bufferedImage = barCodeGenerator.generateImage();
        //保存图像
        ImageIO.write(bufferedImage,"png",new File("CODE_11.png"));
    }
} 

运行效果:

 技术图片

Code 39:

public static void main(String[] args) throws IOException {
    //创建BarcodeSettings
    BarcodeSettings settings = new BarcodeSettings();
    //设置条形码数据
    settings.setData("ABC 123456789");
    //设置符号属性
    settings.setType(BarCodeType.CODE_39);
    //在底部设置显示文本位置
    settings.setShowTextOnBottom(true);
    //设置边框可见
    settings.hasBorder(true);
    //创建条形码生成器实例
    BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
    //从条形码生成器中获取图像
    BufferedImage bufferedImage = barCodeGenerator.generateImage();
    //保存图像
    ImageIO.write(bufferedImage,"png",new File("CODE_39.png"));
}

 

 

运行效果:

技术图片

Code 128:

public class CODE_128 {

    public static void main(String[] args) throws IOException {
        //创建BarcodeSettings
        BarcodeSettings settings = new BarcodeSettings();
        //设置条形码数据
        settings.setData("ABCD 12345 abcd");
        //设置符号属性
        settings.setType(BarCodeType.CODE_128);
        //在底部设置显示文本位置 
       settings.setShowTextOnBottom(true);
        //设置边界可见
        settings.hasBorder(true);
        //创建条形码生成器实例
        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
        //从条形码生成器获取图像
        BufferedImage bufferedImage = barCodeGenerator.generateImage();
        //保存图像
        ImageIO.write(bufferedImage,"png",new File("CODE_128.png"));
    } 

运行效果

技术图片

QR_Code:

public class QR_CODE {
    public static void main(String[] args) throws IOException {
        //创建BarcodeSettings
        BarcodeSettings settings = new BarcodeSettings();
        //设置条形码数据
        settings.setData("ABC 123456789");
        //设置符号属性
        settings.setType(BarCodeType.QR_CODE);
        //在底部设置ShowText位置
        settings.setShowTextOnBottom(true);
        //设置边框是可见的
        settings.hasBorder(true);
        //创建BarCodeGenerator实例
      BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
        //从条形码生成器获取图像
        BufferedImage bufferedImage = barCodeGenerator.generateImage();
        //保存图像
        ImageIO.write(bufferedImage,"png",new File("QR_CODE.png"));
    }
} 

运行效果:

技术图片

 

Barcode扫描:

下面我们将尝试将将几个条形码的合集放在一起扫描,使用BarcodeScanner 类的scan()方法读取多个条形码数据。图像和代码如下所示:技术图片

public class Scan {
    public static void main(String[] args) throws Exception {
       //从要扫描的图像中获取信息
       String[] s= BarcodeScanner.scan("C:\\\\Users\\\\Administrator\\\\Desktop\\\\Barcode.png");
        for (int i=0;i< s.length ;i++){
            System.out.println(s[i]);
        }
    }
}

运行效果:

技术图片 

 

以上是关于JAVA实现多种类型条形码的生成与扫描的主要内容,如果未能解决你的问题,请参考以下文章

引用ZXing生成二维码

Android基于Google Zxing实现二维码/条形码扫描生成二维码/条形码

Java生成二维码及条形码工具

JAVA读取USB扫描枪

关于条形码识别,Java实现

java识别条形码api都有哪些