Java 条形码和二维码简介和解析

本文介绍了条形码和二维码的基本概念,强调了它们在数据存储和抗损坏能力上的区别。在Java中,主要借助第三方库Zxing进行条形码和二维码的读写操作,包括BitMatrix、MultiFormatWriter和MatrixToImageWriter等关键类的应用。同时提及了较老的Barcode4J库,主要用于条形码生成。
摘要由CSDN通过智能技术生成

条形码(barcode)

  • 将宽度不等的多个黑条空白,按照一定的编码规则和排列,用以表达一组信息和图形标识符
  • 通常代表一串数字/字母,每一位有特殊含义
  • 一般数据容量30个数字/字母
  • 专门机构管理:中国物品编码中心

二维码,二维条形码

  • 用某种特定的几何图形按照一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息。
  • 比一维条形码能存更多信息,表示更多数据类型
  • 能够存储数字/字母/汉字/图片等信息
  • 字符集128个字符
  • 存储几百到几十KB的字符
  • 抗损坏

JAVA里处理二维码文件

依赖于第三方的库

(1)Zxing(Zebra Crossing)

  • Google出品
  • 支持1D和2D的Barcode
  • 主要类
    – BitMatrix 位图矩阵
    – MulitFormatWriter 位图编写器
    – MatrixToImageWriter 写入图片
条形码解析(写和读)
package zxing;

import com.google.zxing.BarcodeFormat;
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.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;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;

public class BarCodeTest {
   
	/**
	 * generateCode 根据code生成相应的一维码
	 * @param file 一维码目标文件
	 * @param code 一维码内容
	 * @param width 图片宽度
	 * @param height 图片高度
	 */
	 //写条形码文件
    public static void generateCode(File file, String code, int width, int height) {
   
    	//定义位图矩阵BitMatrix
        BitMatrix matrix = null;
        try {
   
            // 使用code_128格式进行编码生成100*25的条形码
        	MultiFormatWriter writer = new MultiFormatWriter();
        	
            matrix = writer.encode(code,BarcodeFormat.CODE_128, width, height, null);
            //matrix = writer.encode(code,BarcodeFormat.EAN_13, width, height, null);
        } catch (WriterException e) {
   
            e.printStackTrace();
        }
        
        //将位图矩阵BitMatrix保存为图片
        try (FileOutputStream outStream = new FileOutputStream(file)) {
   
            ImageIO.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值