Библиотека Qt/QML для обработки изображений штрих-кодов с использованием библиотеки ZXing.
Поддерживает расшифровку штрих-кодов следующих типов:
Поддерживает кодирование штрих-кодов следующих типов:
Скопируйте папку с исходным кодом QZXing в корень вашего проекта. Добавьте следующую строку в ваш .pro файл. Для получения дополнительной информации см. здесь.```qmake include(QZXing/QZXing.pri)
<a name="компиляция_проекта_как_внешней_библиотеки"></a>
## Компиляция проекта как внешней библиотеки
Откройте проект QZXing (QZXing.pro) и скомпилируйте. Если требуется скомпилировать как статическую библиотеку, раскомментируйте следующую строку в .pro файле.
```qmake
CONFIG += staticlib
Теперь в файле проекта введены теги конфигурации для управления зависимостями библиотеки в соответствии с потребностями. Основная часть проекта требует только модули "core" и "gui" Qt. Хотя для обратной совместимости также требуется модуль "quick" Qt. Три уровня зависимостей:
Включение QZXing.pri или сборка QZXing.pro обеспечивает основные функции QZXing, которые требуют только QtCore и QtGui (из-за QImage). Предупреждение! Изначальная конфигурация по умолчанию до 20/03/2017 включала 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.
#include <QZXing.h>
int main()
{
QImage imageToDecode("file.png");
QZXing decoder;
decoder.setDecoder(DecoderFormat_QR_CODE | DecoderFormat_EAN_13);
QString result = decoder.decodeImage(imageToDecode);
}
Сначала зарегистрируйте тип 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 ? "успешно" : "неуспешно"))
}
Функция кодирования была написана как статическая, так как она не зависит от данных, кроме тех, которые предоставлены аргументами.
Используйте функцию кодирования с её стандартными настройками:
#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);
Функция кодирования может быть легко использована в 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 )