gpt4 book ai didi

c - libqrencode 生成一些 android/ios 阅读器无法读取的二维码

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:46 25 4
gpt4 key购买 nike

我正在开发一个嵌入式应用程序,设备可以在 LCD 屏幕上生成 QR 码。

代码生成部分似乎工作得很好,但我似乎在解码时遇到了一些问题。

我通过函数生成二维码

QRcode *qr = QRcode_encodeString8bit("http://some/url/", 0, QR_ECLEVEL_Q);

然后再转换成图片库可以读取的格式显示在屏幕上。然而,虽然 Android 上的“QR Droid”应用程序可以读取它并将我发送到 URL,但另一个名为“Qr Barcode Scanner”的应用程序似乎无法识别代码,即使它似乎检测到对齐点。 iOS 也是如此——一些应用程序可以很好地读取它,而一些应用程序就像它不是代码一样。

这个问题的可能原因是什么?我尝试了不同的纠错级别,但不是这样。

提前感谢您的回复..

编辑:显然代码被水平翻转了。我更改了将其转换为 16 位图像的方式,并且成功了。我正在记录一个代码片段以供将来引用,以防其他人偶然发现同样的问题。

QRcode *qr = QRcode_encodeString8bit(string, 0, QR_ECLEVEL_H);
int i, j;
for (i = 0; i < qr->width; i++) {
for (j = qr->width - 1; j >= 0; j--) { //flipped this
if (qr->data[(j * qr->width) + i] & 0x1)
*(qr_img++) = COLOR_16BIT_BLACK;
else
*(qr_img++) = COLOR_16BIT_WHITE;
}
}

最佳答案

在我的例子中,有效的代码(与输出相同结果的二维码生成器比较)看起来像这样

QRcode *qr;
qr = QRcode_encodeString("ABC012345", 0, QR_ECLEVEL_H, QR_MODE_8, 1);

int i_qr, j_qr;
for (i_qr = 0; i_qr < qr->width; i_qr++) {
for (j_qr = 0; j_qr < qr->width; j_qr++) {
if (qr->data[(i_qr * qr->width) + j_qr] & 0x1)
printf("*");
else
printf(" ");
}
printf("\n");
}

关于c - libqrencode 生成一些 android/ios 阅读器无法读取的二维码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com