Improve QR code detection

This commit is contained in:
dsc 2021-05-14 22:42:14 +02:00
parent 1b1d1db14d
commit b61b2b1630
2 changed files with 15 additions and 17 deletions

View file

@ -184,31 +184,33 @@ namespace wowletvr {
auto results = m_qrDecoder.decodePNG(path); auto results = m_qrDecoder.decodePNG(path);
auto result = wowletvr::WowletVR::checkQRScreenshotResults(results); auto result = wowletvr::WowletVR::checkQRScreenshotResults(results);
qDebug() << "no initial results"; qDebug() << "QR code try #1: " << result;
if(result.isEmpty()) { if(result.isEmpty()) {
qDebug() << "trying to invert the image"; qDebug() << "trying to invert the image";
// lets try to invert the image
QImage image(path); QImage image(path);
image.invertPixels(); image.invertPixels();
image.save(pathPreview); image.save(pathPreview);
results = m_qrDecoder.decodePNG(pathPreview); results = m_qrDecoder.decodePNG(pathPreview);
result = wowletvr::WowletVR::checkQRScreenshotResults(results); result = wowletvr::WowletVR::checkQRScreenshotResults(results);
if(!result.isEmpty()) { qDebug() << "QR code try #2: " << result;
qDebug() << "Found QR code after inverting the image."; }
if(!result.isEmpty()) {
qDebug() << "QR code decoded, trying address validation.";
if(result.toLower().startsWith("wownero:"))
result = result.remove(0, 8);
if(WalletManager::addressValid(result, NetworkType::MAINNET)) {
qDebug() << "QR code appears valid.";
emit qrScreenshotSuccess(result); emit qrScreenshotSuccess(result);
QFile file (path); QFile file(path);
file.remove(); file.remove();
return; return;
} }
} else {
qDebug() << "QR code found.";
emit qrScreenshotSuccess(result);
QFile file (path);
file.remove();
return;
} }
emit qrScreenshotSuccess("No QR code could be detected."); emit qrScreenshotFailed("No QR code could be detected.");
} }
QString WowletVR::checkQRScreenshotResults(std::vector<std::string> results) { QString WowletVR::checkQRScreenshotResults(std::vector<std::string> results) {

View file

@ -51,13 +51,9 @@ ColumnLayout {
function onQrScreenshotSuccess(address) { function onQrScreenshotSuccess(address) {
root.takingScreenshot = false; root.takingScreenshot = false;
console.log("onPinLookupReceived", address); console.log("onPinLookupReceived", address);
if(!address.startsWith("wownero:")) {
messagePopup.showMessage("Invalid QR code", "QR data did not start with \"wownero:\"");
return;
}
if(sendStateView.currentView === sendStateView.qrPage) { if(sendStateView.currentView === sendStateView.qrPage) {
sendStateController.destinationAddress = address.slice(8); sendStateController.destinationAddress = address;
sendStateView.state = "transferPage"; sendStateView.state = "transferPage";
} }
} }