Dynamsoft Barcode Reader教程:如何使用Dynamsoft Java条形码阅读器扫描多个条形码

news2024/9/20 19:39:33

目前有许多开源和商业条形码SDK,但只有少数可以通过扫描一次来识别多个条形码。当您在Google中搜索条形码SDK或Java条形码SDK时,您会发现Dynamsoft Barcode Reader SDK始终位于搜索结果的前5位。在本文中,我将分享如何使用Dynamsoft Java条码读取器读取多个条形码。

Dynamsoft Barcode Reader SDK一款多功能的条码读取控件,只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序。这可以节省数月的开发时间和成本。能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。使用Dynamsoft Barcode Reader SDK,你可以创建强大且实用的条形码扫描仪软件,以满足你的业务需求。

点击下载Dynamsoft Barcode Reader SDK正式版icon-default.png?t=N7T8https://www.evget.com/product/3691/download


使用Maven构建Java条形码阅读器

安装Maven。

为Visual Studio Code安装Maven扩展。

Dynamsoft Barcode Reader教程:如何使用Dynamsoft Java条形码阅读器扫描多个条形码

选择archetype-quickstart-jdk8创建一个“Hello World” Maven项目。

Dynamsoft Barcode Reader教程:如何使用Dynamsoft Java条形码阅读器扫描多个条形码

我们可以按F5键立即运行该应用程序。

Dynamsoft Barcode Reader教程:如何使用Dynamsoft Java条形码阅读器扫描多个条形码

接下来,我们可以将Dynamsoft Barcode Reader添加为pom.xml的依赖项:

<dependencies>
    <dependency>
        <groupId>com.dynamsoft</groupId>
        <artifactId>dbr</artifactId>
        <version>7.3</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>dbr</id>
        <url>https://download.dynamsoft.com/maven/dbr/jar</url>
    </repository>
</repositories>

在Java源代码中导入依赖项:

import com.dynamsoft.barcode.*;

使用有效的许可证实例化条形码读取器对象:

BarcodeReader br = null;
try {
    // Get license from https://www.dynamsoft.com/CustomerPortal/Portal/Triallicense.aspx
    br = new BarcodeReader("LICENSE-KEY");
} catch (Exception e) {
    System.out.println(e);
    return;
}

开发人员可以使用三种可选的解码功能:

1.encodeBufferedImage()

BufferedImage img = null;
try {
    img = ImageIO.read(new File(pszImageFile));
    TextResult[] results = br.decodeBufferedImage(img, "");
 
} catch (IOException e) {
    System.out.println(e);
}

2.encodeFile()

TextResult[] results = br.decodeFile(pszImageFile, "");

3.encodeFileInMemory

TextResult[] results = br.decodeFileInMemory(Files.readAllBytes(new File(pszImageFile).toPath()), "");

调用解码API后,我们可以获得以下所有条形码结果:

if (results != null &amp;&amp; results.length > 0) {
    String pszTemp = null;
    iIndex = 0;
    for (TextResult result : results) {
        iIndex++;
        pszTemp = String.format("  Barcode %d:", iIndex);
        System.out.println(pszTemp);
        pszTemp = String.format("    Page: %d", result.localizationResult.pageNumber + 1);
        System.out.println(pszTemp);
        if (result.barcodeFormat != 0) {
            pszTemp = "    Type: " + result.barcodeFormatString;
        } else {
            pszTemp = "    Type: " + result.barcodeFormatString_2;
        }
        System.out.println(pszTemp);
        pszTemp = "    Value: " + result.barcodeText;
        System.out.println(pszTemp);
 
        pszTemp = String.format("    Region points: {(%d,%d),(%d,%d),(%d,%d),(%d,%d)}",
                result.localizationResult.resultPoints[0].x, result.localizationResult.resultPoints[0].y,
                result.localizationResult.resultPoints[1].x, result.localizationResult.resultPoints[1].y,
                result.localizationResult.resultPoints[2].x, result.localizationResult.resultPoints[2].y,
                result.localizationResult.resultPoints[3].x, result.localizationResult.resultPoints[3].y);
 
        System.out.println(pszTemp);
        System.out.println();
    }
}

如果要将条形码读取功能部署到Web服务器以处理大量解码请求,则可以使用线程池来模拟方案:

ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
  
for (int i = 1; i <= 1000; i++) 
{
    executor.execute(new Runnable(){
     
        @Override
        public void run() {
            App test = new App();
            test.decodefile(filename);
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
        }
    });
}
executor.shutdown();

为了避免内存不足,请不要使用BufferedImage类,因为默认的JVM堆内存是有限的。

要在Visual Studio Code中使用输入图像运行应用程序,请将args添加到.vscode \ launch.json文件:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "Debug (Launch) - Current File",
            "request": "launch",
            "mainClass": "${file}",
            "args": "images/AllSupportedBarcodeTypes.png"
        },
        {
            "type": "java",
            "name": "Debug (Launch)-App<test>",
            "request": "launch",
            "mainClass": "com.dynamsoft.App",
            "projectName": "test",
            "args": "images/AllSupportedBarcodeTypes.png"
        }
    ]
}

在命令行工具中运行Java条码读取器

为了方便地运行具有依赖性的Java程序,我们可以将maven程序集插件添加到pom.xml中:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

然后将所有内容构建到一个jar文件中:

mvn clean install assembly:assembly

最后,使用以下命令运行Java条码读取器:

java -cp target/test-1.0-SNAPSHOT-jar-with-dependencies.jar com.dynamsoft.App images/AllSupportedBarcodeTypes.png

Dynamsoft Barcode Reader教程:如何使用Dynamsoft Java条形码阅读器扫描多个条形码

一旦Windows没有问题,我们就可以验证该程序是否可以在Linux上运行。

使用Docker创建了一个Linux环境。这是我的Dockerfile

FROM openjdk:11-stretch
COPY images/AllSupportedBarcodeTypes.png AllSupportedBarcodeTypes.png
COPY target/test-1.0-SNAPSHOT-jar-with-dependencies.jar test-1.0-SNAPSHOT-jar-with-dependencies.jar
CMD java -cp test-1.0-SNAPSHOT-jar-with-dependencies.jar com.dynamsoft.App AllSupportedBarcodeTypes.png

现在,构建Docker映像并在Docker Linux容器中运行Java程序:

docker rmi dynamsoft/barcode-reader -f
docker build -t dynamsoft/barcode-reader -f Dockerfile .
docker run -it dynamsoft/barcode-reader

Dynamsoft Barcode Reader教程:如何使用Dynamsoft Java条形码阅读器扫描多个条形码

本教程内容到这里就完结了,希望对您有所帮助~您可以关注我们慧都网了解更多产品资讯,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1273316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

内模原理与控制

基于模型的控制方法&#xff1a; 把外部作用信号的动力学模型植入控制器来构成高精度反馈控制系统的设计原理。 内模原理&#xff08;IMP&#xff09;指的是&#xff0c;想要实现对R(s)的无差跟踪&#xff0c;系统的反馈回路中需要包含一个与外部输入R(s)相同的动力学模型。通…

如何使用Selenium进行Web自动化测试?一文6个步骤轻松玩转!

概述&#xff1a; Web自动化测试是现代软件开发过程中至关重要的一环。Selenium是一个强大的自动化测试工具&#xff0c;可以模拟用户在Web浏览器中的操作&#xff0c;实现自动化的测试流程。本文将介绍如何使用Selenium进行Web自动化测试&#xff0c;并附带代码示例&#xff…

TZOJ 1375 偶数求和

答案&#xff1a; #include <stdio.h> int main() {int n 0, m 0, j 0, s 0, count1 0,k0;int arr[101] { 0 }; //选择数组是用来控制打印格式while (scanf("%d%d", &n, &m) 2 && (n < 100 && n>0)) //多组数据输入…

docker (镜像分层、阿里云镜像推送/拉去)-day02

一、镜像概念 Docker 镜像是 Docker 容器的基础&#xff0c;它提供了一种可重复使用的、跨平台的部署方式&#xff0c;使得应用程序的部署和运行变得简单和高效。 把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),打包好…

宝塔环境备份到西部数码FSS

1、登陆宝塔面板-软件商店-第三方应用&#xff0c; 搜索ftp&#xff1a;找到FTP存储空间&#xff0c;点击安装 2、在软件商城-已安装&#xff0c;找到ftp存储空间&#xff0c;点击进入选项设置. 3、按照下图填写fss相关参数.这些信息可以在fss详情中查看.目录路径如果没有请先在…

U-GAT-IT 使用指南:人脸动漫风格化

U-GAT-IT 使用指南 网络结构优化目标 论文地址&#xff1a;https://arxiv.org/pdf/1907.10830.pdf 项目代码&#xff1a;https://github.com/taki0112/UGATIT U-GAT-IT 和 Pix2Pix 的区别&#xff1a; U-GAT-IT&#xff1a;主要应用于图像风格转换、图像翻译和图像增强等任务…

ROS vscode使用基本配置

1、创建ros工作空间 2、启动 vscode 3、vscode 中编译 ros ctrl shift B 调用编译&#xff0c;选择:catkin_make:build 修改.vscode/tasks.json 文件 4、 创建 ROS 功能包 选定 src ---> create catkin package 依次设置包名、添加依赖 5、C 实现 在功能包的 src 下…

用最少数量的箭引爆气球[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points&#xff0c;其中points[i] [xstart, xend]表示水平直径在xstart和xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点完全垂直…

Microsoft 365 for Mac:提升您的办公效率的终极选择

在现代工作环境中&#xff0c;高效的办公软件是提高工作效率和团队合作的关键。Microsoft 365 for Mac&#xff08;前身为Office 365&#xff09;是微软为Mac操作系统推出的一套全面的办公软件解决方案&#xff0c;为用户提供了强大的工具和功能&#xff0c;帮助您在任何地方都…

OData服务的开发-SAP Gateway Service Builder Projects

文章目录 概述操作 概述 有多种方法可以开发 OData 服务。对于经典的 ABAP 开发&#xff0c;引入了 SAP Gateway Service Builder。但是&#xff0c;在 SAP S/4HANA 1909 中引入的 ABAP RESTful 应用程序编程模型。 两个模型可以并行使用。但是&#xff0c;建议使用 ABAP RES…

MIT_线性代数笔记:第 10 讲 四个基本子空间

目录 四个子空间 Four subspaces基和维数 Basis& Dimension新向量空间 New vector space 本讲讨论矩阵的四个基本子空间以及他们之间的关系。 四个子空间 Four subspaces 任意的 m x n 矩阵 A 都定义了四个子空间。 列空间 Column space C(A) 矩阵 A 的列空间是 A 的列向…

YOLO改进系列之ParNetAttention注意力机制

ParNet注意力是一种用于自然语言处理任务的注意力机制&#xff0c;它是由谷歌在2019年提出的。ParNet注意力旨在解决传统注意力机制在处理长序列时的效率问题。传统的注意力机制在计算注意力权重时&#xff0c;需要对所有输入序列的位置进行逐一计算&#xff0c;这导致了在长序…

INA219电流感应芯片_程序代码

详细跳转借鉴链接INA219例程此处进行总结 简单介绍一下 INA219&#xff1a; 1、 输入脚电压可以从 0V~26V,INA219 采用 3.3V/5V 供电. 2、 能够检测电流&#xff0c;电压和功率&#xff0c;INA219 内置基准器和乘法器使之能够直接以 A 为单位 读出电流值。 3、 16 位可编程地…

GPT-4 惨遭削弱;拼多多市值一度超阿里;雷军回应个人向武汉大学捐款 13 亿元丨 RTE 开发者日报 Vol.96

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

【Openstack Train安装】三、openstack安装

本文在所有节点安装openstack包&#xff0c;请确保按照以下教程完成了相关配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 安装环境如下 VMware WorkstationV17.0本机系统win11虚拟机系统CentOS 7.5 openstack包含多个版本&…

传智杯第五届题解

B.莲子的机械动力学 分析&#xff1a;这题有个小坑&#xff0c;如果是00 0&#xff0c;结果记得要输出0。 得到的教训是&#xff0c;避免前导0出现时&#xff0c;要注意答案为0的情况。否则有可能会没有输出 #include<assert.h> #include<cstdio> #include<…

【神印王座】永恒之塔秘密透露,林鑫告白李馨,皓晨采儿甜蜜接吻

Hello,小伙伴们&#xff0c;我是拾荒君。 《神印王座》第83集如期而至&#xff0c;带来了令人期待已久的更新。与众多热情的观众一样&#xff0c;拾荒君一得到更新消息&#xff0c;便急不可耐地观赏起来。这一集中&#xff0c;龙皓晨随着月魔宫的月夜商队成功抵达联盟&#xf…

下载并安装anaconda和VScode,配置虚拟环境,并使用VScode运行代码

文章目录 前言软件下载Anaconda下载VScode下载 软件安装Anaconda安装Vscod安装 配置虚拟环境并运行代码Anaconda创建环境VScode使用&#xff0c;运行代码1. 打开代码所在文件夹2. 选择解释器3. 运行代码 总结 前言 运行python代码&#xff0c;需要2个软件如下&#xff1a; Ana…

漏洞扫描服务是什么

漏洞扫描服务是维护网络安全的重要一环。通过定期或实时的漏洞扫描&#xff0c;组织可以及时发现并修复可能存在的安全威胁&#xff0c;增强自身网络的安全性。在选择漏洞扫描服务时&#xff0c;需要明确自身的需求和目标&#xff0c;并选择合适的工具和服务提供商。只有这样&a…

TFIDF、BM25、编辑距离、倒排索引

TFIDF TF刻画了词语t对某篇文档的重要性&#xff0c;IDF刻画了词语t对整个文档集的重要性