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
    评论
Spire.Barcode for JAVA 是一款Java条形码组件,开发人员可以使用它在Java应用程序中简洁快速地生成和识别多种一维和二维条码。下载以后解压缩,然后从lib文件夹下导入Spire.Barcode.jar包到你的Java应用程序中即可。 支持的条码类型 Spire.Barcode for JAVA支持的条码类型多达38种,包括常见的QR Code、Code 25、 CodeBar、Code 39、Code 93、Code 128、PDF 417、Data Matrix、 EAN 13、EAN 128等。 生成QR Code代码示例 package GenerateBarcode; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import com.spire.barcode.BarCodeGenerator; import com.spire.barcode.BarCodeType; import com.spire.barcode.BarcodeSettings; import com.spire.barcode.QRCodeECL; import com.sun.javafx.print.Units; public class QR_Code { public static void main(String[] args) throws IOException { //create an instance of BarcodeSetteings BarcodeSettings settings = new BarcodeSettings(); //set barcode type settings.setType(BarCodeType.QR_CODE); //set barcode data settings.setData("ABC 123456789"); //set dispaly text settings.setData2D("ABC 123456789"); //show text on bottom settings.setShowTextOnBottom(true); //set the border invisible settings.hasBorder(false); //set width of the barcode module settings.setX(2); //set the error correction level settings.setQRCodeECL(QRCodeECL.M); //create BarCodeGenerator object based on settings BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings); //generate image data and store in BufferedImage instance BufferedImage bufferedImage = barCodeGenerator.generateImage(); //save to image ImageIO.write(bufferedImage,"png",new File("QR_CODE.png")); System.out.println("Complete!"); } }
要在Java中识别扫描条形码,你可以使用第三方库ZXing(Zebra Crossing)。ZXing是一个开源的条形码图像处理库,它支持多种条形码格式的识别。 首先,你需要将ZXing添加到你的Java项目中。你可以在https://github.com/zxing/zxing下载最新的ZXing源代码包,然后将核心和javase模块导入到你的项目中。 接下来,你可以使用以下示例代码来实现条形码的识别: ```java import com.google.zxing.*; import com.google.zxing.common.HybridBinarizer; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class BarcodeReader { public static void main(String[] args) { try { File file = new File("barcode.png"); // 替换为你的条形码图片路径 BufferedImage image = ImageIO.read(file); LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result = new MultiFormatReader().decode(bitmap); System.out.println("Barcode Format: " + result.getBarcodeFormat()); System.out.println("Barcode Text: " + result.getText()); } catch (IOException | NotFoundException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们首先读取条形码图片,并将其转换为`BufferedImage`对象。然后,我们使用ZXing提供的`BufferedImageLuminanceSource`类将`BufferedImage`对象转换为亮度源。接下来,我们使用`HybridBinarizer`类将亮度源转换为二进制位图。最后,我们使用`MultiFormatReader`类对二进制位图进行解码,获取条形码的格式和文本信息。 请确保将代码中的`barcode.png`替换为你实际使用的条形码图片的路径。 以上是使用ZXing库在Java中识别扫描条形码的基本实现。你可以根据自己的需求进一步扩展和优化代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值