mirror of
https://github.com/feather-wallet/feather.git
synced 2025-03-12 09:37:47 +00:00
QrCodeUtils
This commit is contained in:
parent
30c600fd7c
commit
5175ffd8a5
2 changed files with 70 additions and 0 deletions
53
src/qrcode_scanner/QrCodeUtils.cpp
Normal file
53
src/qrcode_scanner/QrCodeUtils.cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright (c) 2020-2021, The Monero Project.
|
||||
|
||||
#include "QrCodeUtils.h"
|
||||
#include <QDebug>
|
||||
|
||||
bool QrCodeUtils::zimageFromQImage(const QImage &qImg, zbar::Image &dst) {
|
||||
qDebug() << qImg.format();
|
||||
switch (qImg.format()) {
|
||||
case QImage::Format_RGB32 :
|
||||
case QImage::Format_ARGB32 :
|
||||
case QImage::Format_ARGB32_Premultiplied :
|
||||
break;
|
||||
default :
|
||||
return false;
|
||||
}
|
||||
|
||||
unsigned int bpl(qImg.bytesPerLine());
|
||||
unsigned int width(bpl / 4);
|
||||
unsigned int height(qImg.height());
|
||||
|
||||
dst.set_size(width, height);
|
||||
dst.set_format("BGR4");
|
||||
unsigned long datalen = qImg.sizeInBytes();
|
||||
dst.set_data(qImg.bits(), datalen);
|
||||
if ((width * 4 != bpl) || (width * height * 4 > datalen)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
QString QrCodeUtils::scanImage(const QImage &img) {
|
||||
zbar::ImageScanner scanner;
|
||||
scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1);
|
||||
|
||||
zbar::Image zImg;
|
||||
int r = zimageFromQImage(img, zImg);
|
||||
if (!r) {
|
||||
qWarning() << "Unable to convert QImage into zbar::Image";
|
||||
return "";
|
||||
}
|
||||
|
||||
zbar::Image scanImg = zImg.convert(*(long*)"Y800");
|
||||
scanner.scan(scanImg);
|
||||
|
||||
QString result;
|
||||
for (zbar::Image::SymbolIterator sym = scanImg.symbol_begin(); sym != scanImg.symbol_end(); ++sym) {
|
||||
if (!sym->get_count()) {
|
||||
result = QString::fromStdString(sym->get_data());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
17
src/qrcode_scanner/QrCodeUtils.h
Normal file
17
src/qrcode_scanner/QrCodeUtils.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright (c) 2020-2021, The Monero Project.
|
||||
|
||||
#ifndef FEATHER_QRCODEUTILS_H
|
||||
#define FEATHER_QRCODEUTILS_H
|
||||
|
||||
#include <QImage>
|
||||
#include <zbar.h>
|
||||
|
||||
class QrCodeUtils {
|
||||
public:
|
||||
static bool zimageFromQImage(const QImage &qImg, zbar::Image &dst);
|
||||
static QString scanImage(const QImage &img);
|
||||
};
|
||||
|
||||
|
||||
#endif //FEATHER_QRCODEUTILS_H
|
Loading…
Reference in a new issue