generate and show qr code
This commit is contained in:
@@ -5,6 +5,10 @@
|
||||
#include <cstring>
|
||||
#include <iostream>
|
||||
#include <locale>
|
||||
#include <opencv2/core/mat.hpp>
|
||||
#include <opencv2/imgcodecs.hpp>
|
||||
#include <opencv2/imgproc.hpp>
|
||||
#include <qrencode.h>
|
||||
#include <regex>
|
||||
#include <string>
|
||||
#include "../exceptions/ofdrequestexception.h"
|
||||
@@ -13,6 +17,7 @@
|
||||
#include <fstream>
|
||||
#include <ifaddrs.h>
|
||||
#include <netinet/in.h>
|
||||
#include <opencv2/opencv.hpp>
|
||||
|
||||
std::string get_local_ip_address() {
|
||||
struct ifaddrs * ifAddrStruct=NULL;
|
||||
@@ -214,3 +219,28 @@ Check parseOfdRuAnswer(std::string html) {
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
void generate_qr_code(std::string data) {
|
||||
QRcode *qrCode = QRcode_encodeString(data.c_str(), 2, QR_ECLEVEL_L, QR_MODE_8, 1);
|
||||
if (qrCode == NULL) {
|
||||
std::cerr << "Error on generating qr code" << std::endl;
|
||||
}
|
||||
|
||||
cv::Mat qrCodeImage = cv::Mat::zeros(qrCode->width, qrCode->width, CV_8UC3);
|
||||
|
||||
for (int y = 0; y < qrCode->width; y++) {
|
||||
for (int x = 0; x < qrCode->width; x++) {
|
||||
cv::rectangle(
|
||||
qrCodeImage,
|
||||
cv::Point(x, y),
|
||||
cv::Point(x + 1, y + 1),
|
||||
((qrCode->data[y * qrCode->width + x] & 1) ?
|
||||
cv::Scalar(255., 255., 255.) : cv::Scalar(0., 0., 0.)
|
||||
),
|
||||
-1
|
||||
);
|
||||
}
|
||||
}
|
||||
cv::imwrite(get_path_relative_to_home(".local/share/checks_parser/binaryeye_connection.png"), qrCodeImage);
|
||||
QRcode_free(qrCode);
|
||||
}
|
||||
|
||||
@@ -20,4 +20,6 @@ Check parseOfdRuAnswer(std::string);
|
||||
|
||||
std::wstring trim_html_response(std::wstring& check);
|
||||
|
||||
void generate_qr_code(std::string data);
|
||||
|
||||
#endif // UTILS_H
|
||||
|
||||
Reference in New Issue
Block a user