java扫描条形码的两种方式

barcode方法Jar文件获取及导入:

方法1通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Barcode.jar文件导入到java程序。参考如下导入效果:

方法2可以使用maven仓库安装导入。可参考导入方法

 

decode方法Jar文件获取及导入:

可以直接使用maven导入:

 <!--条形码扫描-->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.3</version>
        </dependency>

代码

import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import com.spire.barcode.BarCodeType;
import com.spire.barcode.BarcodeScanner;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Luo罗
 * @company Ytrees——野树
 * @date 2022/1/14 16:59
 * @Package PACKAGE_NAME
 * class
 */
public class Test {

    public static void main(String[] args) {
        long startTime = System.currentTimeMillis(); // 获取开始时间
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
        System.out.print("程序开始执行时间:");
        System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
        try {
            barcode("C:\\Users\\Yeshu\\a.jpg");
            //decode("C:\\Users\\Yeshu\\c.jpg");
            //decode("C:\\Users\\Yeshu\\f.jpg");

        } catch (Exception e) {
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis(); // 获取结束时间
        System.out.print("程序结束执行时间:");
        System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
        long l = endTime - startTime;
        double time = (l % (1000 * 60)) / 1000.0;
        System.out.println("程序总运行时间: " + time + "秒");
    }

    /**
     * 推荐使用
     * @param imgPath
     * @return String
     */
    public static String decode(String imgPath) {
        try {
            System.out.println("使用 zxing 扫描");
            BufferedImage image = ImageIO.read(new File(imgPath));
            if (image == null) {
                return "";
            }
            LuminanceSource source = new BufferedImageLuminanceSource(image);
            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

            Map<DecodeHintType, Object> hints = new HashMap<>();
            hints.put(DecodeHintType.CHARACTER_SET, "GBK");
            hints.put(DecodeHintType.PURE_BARCODE, Boolean.TRUE);
            hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);

            Result result = new MultiFormatReader().decode(bitmap, hints);
            System.out.println();
            System.out.println("快递单号:"+result.getText());
            System.out.println();
            return result.getText();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    public static void barcode(String imgPath) throws Exception {

        System.out.println("使用 barcode 扫描");
        String[] datas = BarcodeScanner.scan(imgPath,BarCodeType.Code_128);

        for (String data : datas) {
            System.out.println();
            System.out.println("快递单号:"+data);
            System.out.println();
        }
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值