1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lzpxc-qzxing

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

qzxing

Библиотека Qt/QML для обработки изображений штрих-кодов с использованием библиотеки ZXing.

Поддерживает расшифровку штрих-кодов следующих типов:

  • UPC-A
  • UPC-E
  • EAN-8
  • EAN-13
  • ITF
  • Code 39
  • Code 93
  • Code 128 (GS1)
  • Codabar
  • QR Code
  • Data Matrix
  • Aztec (beta)
  • PDF 417

Поддерживает кодирование штрих-кодов следующих типов:

  • QR Code

Содержание

  1. Как включить
    1. Включение исходного кода
    2. Компиляция проекта как внешней библиотеки
    3. Управление зависимостями
      1. QZXing (ядро)
      2. QZXing (ядро + QML)
      3. QZXing + QZXingFilter
  2. Как использовать
    1. Операция расшифровки
      1. C++/Qt
      2. Qt Quick
    2. Операция кодирования
      1. C++/Qt
      2. Qt Quick
    3. Форматы закодированного текста
  3. Контакты

Как включитьПроект можно использовать двумя способами:

Включение исходного кода

Скопируйте папку с исходным кодом QZXing в корень вашего проекта. Добавьте следующую строку в ваш .pro файл. Для получения дополнительной информации см. здесь.```qmake include(QZXing/QZXing.pri)

<a name="компиляция_проекта_как_внешней_библиотеки"></a>
## Компиляция проекта как внешней библиотеки
Откройте проект QZXing (QZXing.pro) и скомпилируйте. Если требуется скомпилировать как статическую библиотеку, раскомментируйте следующую строку в .pro файле.

```qmake
CONFIG += staticlib

Управление зависимостями

Теперь в файле проекта введены теги конфигурации для управления зависимостями библиотеки в соответствии с потребностями. Основная часть проекта требует только модули "core" и "gui" Qt. Хотя для обратной совместимости также требуется модуль "quick" Qt. Три уровня зависимостей:

QZXing (ядро)

Включение QZXing.pri или сборка QZXing.pro обеспечивает основные функции QZXing, которые требуют только QtCore и QtGui (из-за QImage). Предупреждение! Изначальная конфигурация по умолчанию до 20/03/2017 включала qzxing_qml. Этот тег не мог быть удален после добавления, поэтому его было необходимо удалить из настроек по умолчанию.

QZXing (ядро + QML)

Если приложение будет использовать функциональность QML, теперь можно добавить зависимость к нему. Это можно сделать, добавив следующую строку в файл .pro проекта:

CONFIG += qzxing_qml
```<a name="controlDependenciesCoreQMLQZXingFilter"></a>
### QZXing + QZXingFilter
QZXing включает QZXingFilter, реализацию QAbstractVideoFilter для предоставления возможности передачи прямого потока в библиотеку декодирования. Он автоматически включает реализацию QML.
Этот вариант требует модуля "multimedia" Qt, поэтому он рассматривается как отдельная конфигурация. Его можно использовать, добавив следующую строку в файл .pro проекта:```qmake
CONFIG += qzxing_multimedia

Как использовать

Вот простые фрагменты кода, которые кратко демонстрируют использование библиотеки. Для получения более подробной информации рекомендуется обратиться к примерам, включенным в репозиторий и к wiki.

Декодирование

C++/Qt

#include <QZXing.h>

int main() 
{
	QImage imageToDecode("file.png");
	QZXing decoder;
	decoder.setDecoder(DecoderFormat_QR_CODE | DecoderFormat_EAN_13);
	QString result = decoder.decodeImage(imageToDecode);
}

Qt Quick

Сначала зарегистрируйте тип QZXing в движке QML.

#include <QZXing.h>

int main() 
{
	...
	QZXing::registerQMLTypes();
	...
}

Затем в файле QML

import QZXing 2.3

function decode(preview) {
	imageToDecode.source = preview
	decoder.decodeImageQML(imageToDecode);
}

Image{
	id:imageToDecode
}

QZXing{
	id: decoder

	enabledDecoders: QZXing.DecoderFormat_QR_CODE

	onDecodingStarted: console.log("Декодирование изображения началось...")

	onTagFound: console.log("Данные штрих-кода: " + tag)

	onDecodingFinished: console.log("Декодирование завершено " + (succeeded==true ? "успешно" : "неуспешно"))
}

Кодирование

C++/Qt

Функция кодирования была написана как статическая, так как она не зависит от данных, кроме тех, которые предоставлены аргументами.

Используйте функцию кодирования с её стандартными настройками:

  • Формат: QR Code
  • Размер: 240x240
  • Уровень коррекции ошибок: Низкий (L)
#include <QZXing.h>

int main() 
{
	QString data = "text to be encoded";
	QImage barcode = QZXing::encodeData(data);
}    
```Или используйте функцию кодирования с настройками по вашему выбору:

```cpp
QString data = "text to be encoded";
QImage barcode = QZXing::encodeData(data, QZXing::EncoderFormat_QR_CODE,
									QSize(width.toInt(), height.toInt()), QZXing::EncodeErrorCorrectionLevel_H);

Qt Quick

Функция кодирования может быть легко использована в QML через Image Provider QZXing: "image://QZXing/encode/<data_to_be_encoded>". Как и в примере на C++, её можно использовать с стандартными настройками или с настройками по вашему выбору.

Стандартные настройки:

import QZXing 2.3

TextField {
	id: inputField
	text: "Hello world!"
}

Image{
	source: "image://QZXing/encode/" + inputField.text;
	cache: false;
}

Или используйте функцию кодирования с опциональными настройками, передаваемыми как параметры запроса URL:

имя атрибута значение описание
corretionLevel L, M, Q, H уровень коррекции ошибок
format qrcode формат кодирования. В настоящее время только QR Code.

размер изображения можно настроить с помощью свойств Image.sourceWidth и Image.sourceHeight элемента Image QML.

import QZXing 2.3

TextField {
	id: inputField
	text: "Hello world!"
}

Image{
	source: "image://QZXing/encode/" + inputField.text +
					"?corretionLevel=M" +
					"&format=qrcode"
	sourceSize.width: 320
	sourceSize.height: 320
}

Информация о формате закодированного текста

Вот список содержимого, которое было закодировано и протестировано для распознавания приложением Android ZXing:Страница wiki кодирования QR Code

Контакт

В случае отчетов об ошибках или запросов на функции, не стесняйтесь открыть issue.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Qt QR-код Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/lzpxc-qzxing.git
git@api.gitlife.ru:oschina-mirror/lzpxc-qzxing.git
oschina-mirror
lzpxc-qzxing
lzpxc-qzxing
master