Dynamsoft предоставляет Java Barcode SDK как для мобильной, так и для настольной разработки. Мобильная версия распространяется в виде пакета Android AAR, а настольная версия распространяется в виде пакета JAR. Цель этой статьи – помочь разработчикам, которые хотят создавать настольные или серверные приложения для сканирования штрих-кодов на Java или Kotlin.
Установка считывателя штрих-кодов Dynamsoft с помощью Gradle
Чтобы получить Dynamsoft Barcode Reader , вы можете либо загрузить SDK напрямую, либо настроить URL-адрес Maven для инструментов автоматической сборки. Я рекомендую использовать Gradle для создания проекта сканера штрих-кодов Java или Kotlin.
Вот шаги:
Создайте новый проект Gradle:
Перейдите в app> build.gradle , чтобы добавить репозиторий Maven, размещенный Dynamsoft, и зависимость:
Примечание: для создания проектов Android barcode scanner URL-адрес и имя пакета отличаются:
Java-приложение для сканирования штрих-кодов для Windows, Linux и macOS
Dynamsoft Java Barcode SDK реализован в Java Native Interface (JNI). Таким образом, он обеспечивает лучшую производительность, чем чистые Java SDK, такие как ZXing. Хотя базовой технологией является C++, SDK содержит встроенные собственные библиотеки для нескольких операционных систем.
Мы можем открыть App.java или App.kt файлы для создания экземпляра объекта считывателя штрих-кодов следующим образом:
// Java import com.dynamsoft.dbr.*; BarcodeReader br = new BarcodeReader(license);
// Kotlin import com.dynamsoft.dbr.* val br = BarcodeReader(license)
Нажмите здесь , чтобы получить 30-дневную БЕСПЛАТНУЮ пробную лицензию , если вы хотите разблокировать все функции API.
Dynamsoft позволяет разработчикам настраивать алгоритмы для конкретных сценариев. Таким образом, мы можем посетить бесплатную онлайн-демонстрацию штрих-кода , чтобы сгенерировать соответствующий шаблон для инициализации параметров:
// Java br.initRuntimeSettingsWithString("{\"ImageParameter\":{\"Name\":\"Balance\",\"DeblurLevel\":5,\"ExpectedBarcodesCount\":512,\"LocalizationModes\":[{\"Mode\":\"LM_CONNECTED_BLOCKS\"},{\"Mode\":\"LM_STATISTICS\"}]}}", EnumConflictMode.CM_OVERWRITE);
// Kotlin br.initRuntimeSettingsWithString("{\"ImageParameter\":{\"Name\":\"Balance\",\"DeblurLevel\":5,\"ExpectedBarcodesCount\":512,\"LocalizationModes\":[{\"Mode\":\"LM_CONNECTED_BLOCKS\"},{\"Mode\":\"LM_STATISTICS\"}]}}", EnumConflictMode.CM_OVERWRITE)
Следующий пример кода используется для считывания штрих-кодов из файла изображения и распечатки всех результатов:
// Java results = mBarcodeReader.decodeFile(file, ""); for (TextResult result : results) { System.out.println(String.format(" Barcode %d:", index++)); if(result.barcodeFormat != 0){ System.out.println(" Type: " + result.barcodeFormatString); } else { System.out.println(" Type: " + result.barcodeFormatString_2); } System.out.println(" Value: " + result.barcodeText); System.out.println(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)); }
// Kotlin val results: Array= br.decodeFile(file, "") for (result in results) { println(String.format(" Barcode %d:", index++)) if (result.barcodeFormat != 0) { System.out.println(" Type: " + result.barcodeFormatString) } else { System.out.println(" Type: " + result.barcodeFormatString_2) } System.out.println(" Value: " + result.barcodeText) println( java.lang.String.format( " Region points: {(%d,%d),(%d,%d),(%d,%d),(%d,%d)}", result.localizationResult.resultPoints.get(0).x, result.localizationResult.resultPoints.get(0).y, result.localizationResult.resultPoints.get(1).x, result.localizationResult.resultPoints.get(1).y, result.localizationResult.resultPoints.get(2).x, result.localizationResult.resultPoints.get(2).y, result.localizationResult.resultPoints.get(3).x, result.localizationResult.resultPoints.get(3).y ) ) }
С помощью нескольких строк кода выполняется простой сканер штрих-кодов из командной строки.
Вот размытое изображение QR-кода:
Теперь мы можем запустить команду Gradle с указанными аргументами.
./gradlew run --args="../../images/QR-Blurred.jpg ../../license.txt"
Тестирование Java-Приложений с использованием Travis CI
Чтобы проверить, является ли приложение сканера штрих-кодов кроссплатформенным, мы создаем файл .travis.yml для репозитория GitHub:
language: java jobs: include: - name: "Linux" os: linux - name: "macOS" os: osx - name: "Windows" os: windows language: shell before_install: - choco install jdk8 -params 'installdir=c:\\jdk' -y; - export JAVA_HOME=${JAVA_HOME:-/c/jdk}; env: PATH=/c/jdk/bin:$PATH branches: only: - main script: - if [[ ${TRAVIS_OS_NAME} != "windows" ]]; then chmod +x java/gradlew; chmod +x kotlin/gradlew; fi - cd java - ./gradlew test - ./gradlew run --args="../../images/AllSupportedBarcodeTypes.png" - cd .. - cd kotlin - ./gradlew test - ./gradlew run --args="../../images/AllSupportedBarcodeTypes.png"
Мы должны добавить ‘ chmod +x
‘, чтобы файл скрипта gradlew
работал в Linux и macOS.
исходный код
исходный код
Оригинал: “https://dev.to/yushulx/how-to-build-desktop-barcode-scanner-in-java-and-kotlin-fhc”