QREライブラリはアプリケーションにQRコードのエンコード機能を提供するライブラリです。
QREライブラリはQRコードのバージョン40までエンコード可能です。
また、イメージを指定してデザインQRを生成することも可能です。
通常のAPIは、一度画像を渡されたら、成功・失敗にかかわらず、処理が完了するまで、APIのコール側に制御が戻りませんので注意してください。
本バージョンが対応しているQRコードの仕様は次の通りです。
QRコード仕様
QRコードバージョン | バージョン1~40。 |
---|---|
モデル | モデル2のみ |
モード* | 数字モード:0~9(ASCIIコードの0x30~0x39) 英数字モード:0~9(ASCIIコードの0x30~0x39)、A~Z(ASCIIコードの0x41~0x5A)、半角スペース、$、%、*、+、-、.、/、:の記号(ASCIIコードの0x20,0x24,0x25,0x2A,0x2B,0x2D~0x2F,0x3A) 漢字モード:JIS X 0208に基づくShift-JIS漢字。 8ビットバイトモード:、JIS X 0201(ASCIIコード0x00~0xFF)に基づくデータ。英小文字a~z(ASCII値0x61~0x7A)はこのモードに含まれる。 混在モード:上記の4つを組み合わせたデータ。 連結モード:複数のQRコードにデータを分割。 FNC1モード及びECIモードには対応していません。 |
誤り訂正能力 | L,M,H,Q(推奨値は通常のQRコードの場合M、デザインQRコードの場合はH) |
* 本ライブラリでは、データの種類に合わせて最適なモードを選択し、エンコードを行います。
本ライブラリを使用する際は、下記の点に注意してください。
3DS シリーズの画面に表示させる場合 |
1 セル当たり 2 ドット以上を推奨(3DS シリーズのカメラで読み込む場合) 1 セル当たり 3 ドット以上を推奨(GamePad のカメラで読み込む場合) |
---|---|
エンコード結果を印刷して使用する場合 |
3DS シリーズのカメラで読み込む場合は、印刷サイズを 0.45mm/セル 以上にしてください。
WiiU の GamePad のカメラで読み込む場合は、印刷サイズを 0.50mm/セル 以上にしてください。
いずれのカメラで読み込む場合も、バージョンの最大値は下記に従ってください。
|
QRエンコードの手順は、一般的には以下のようになります。
1. GetEncodeBufferSize()にエンコード対象のデータを渡して、エンコードに必要なバッファサイズを取得します。
QRコードは最大16個に分割してデータを格納することができます。QREライブラリでもこの連結QRコードに対応しています。
対象としているQRコードが連結QRコードの場合、GetDivCount()で分割数を取得し、GetQRData()で分割数分QRコードイメージを取得します。
QRコードの分割方法は、元の全体のデータを論理的に適当に分割してQRコードのデータとして格納されます。このとき、全角文字(漢字やひらがな)が含まれている場合、漢字は2バイト単位で分割されます。
つまり、2バイト文字の途中では分割されません。
元の全体のQRデータをQRコードにした場合。「abcdefg日本」が格納されています。 | |||
![]() | |||
これを4つのQRコードに分割した場合 | |||
![]() |
![]() |
![]() |
![]() |
ab | cde | fg | 日本 |
詳しくは、サンプルデモを参考にしてください。
本ライブラリでは、生成したQRコードの中央に、任意のイメージを配置することが可能です。
デザインQRコードを生成する場合は、配置したい画像をEncodeWithImage()に渡して、エンコードを実行してください。
その他は、通常のQRコードを生成時と同じ処理を行います。
本ライブラリはスレッドセーフではありませんので、各APIを割り込みハンドラや異なるスレッドから呼び出した場合、正常に動作しない可能性があります。