0

デバイスがLCD画面にQRコードを生成する組み込みアプリケーションを開発しています。

コード生成部分は問題なく機能しているようですが、デコードに問題があるようです。

関数を介してQRコードを生成します

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

次に、画像ライブラリで読み取って画面に表示できる形式に変換します。ただし、Androidの「QRDroid」アプリはそれを読み取ってURLに正常に送信できますが、「Qrバーコードスキャナー」と呼ばれる別のアプリは、位置合わせポイントを検出しているように見えても、コードを認識していないようです。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;
    }
}
4

2 に答える 2

4

私の場合、動作するコード(同じresoultを出力するqrコードジェネレーターと比較してください)は次のようになります

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");
}
于 2012-10-25T08:05:19.770 に答える
0

@smparkesQRコードが反転しているかどうかわかりません。zxingはそれを正常に読み取り、ミラーリングされたコードを許可しません(TRY_HARDERなしではありません)。

はい、有効なQRコードの鏡像は決して有効ではありません。回転はです。ライブラリが常に無効なQRコードを生成するだけだとしたら、私は驚かれると思います。QR Droidもzxingに基づいているので、これらの無効なコードも読み取るのに邪魔にならない場合は驚かれることでしょう。

しかし、ここでも、他の証拠は、ミラーリングが問題であることを示唆しています。

于 2012-07-16T04:55:23.190 に答える