いくつかQRコードを作成するライブラリで有名なのがあります。
ところで根本的な疑問なのですが
同じ文字列で作ったQRコードはライブラリが違っても同じなのか?
疑問解消のためサンプルアプリを作って検証です。
ついでにライブラリの使用感を比較していきます。ご参考まで。
今回は、以下の3つのライブラリについて調べてみます。
- ZXing.Net
- ThouthtWorks.QRCode
- DotNetBarcode
検証アプリのソースコードはGitHubにおいておきます。
https://github.com/zeikomi552/QRCodeKun
※QRコードは(株)デンソーウェーブの登録商標です
開発環境
- .NET 5.0
- Microsoft Visual Studio Community 2019
- C# WPF
前提としてShift-JISでQRコードを作成することにします。
昨今、UTF8で作成されるQRコードが増えてきているのは確かですが、
僕が試せるデンソーウェーブ製のAT10はShift-JISにしか対応していない(そもそも読み込まない)ためです。
UTF8のQRコードについては、その内新しいスキャナを入手して検証し直す予定です。(予定は未定)
ライブラリの比較
比較内容 | ZXing.Net | ThoughtWorks.QRCode | DotNetBarcode |
---|---|---|---|
Shift-JIS対応(数字) | 〇 | 〇 | 〇 |
Shift-JIS対応(アルファベット) | × | 〇 | 〇 |
Shift-JIS対応(ひらがな) | × | × | 〇 |
速度(*1) | 〇 | △ | × |
範囲 | 他のライブラリに比べIndex範囲外になるのが速い | バージョンの仕様通り | 無制限っぽい |
0文字 | 画像なし | 例外をスロー | 画像なし |
開発 | 中国 | 中国 | 日本 |
*1:速度は3種類のライブラリの相対的な評価であり、実感としてはDotNetBarcodeの速度でも十分速い
この3つの中だとShift-JIS+日本語QRコード縛りではDotNetBarcodeしかありません。
ライブラリ3つ使用して1つしかまともに使えないという失態。
使用した感想
DotNetBarcodeはバージョンごとの限界のバイトサイズを無視してQRコードを作り続けるゴーイングマイウェイなお方。武骨なスタンスが結構好きです。
ただ与えられた範囲に対してQRコードサイズがぴったりでないと左上の方にQRコードが寄ってしまう。
何だか残念。僕の作り方が悪いのかもしれないが、たぶんクワイエットゾーン(QRコードの周囲の隙間)をしっかり守ってるせいだと思います。
Zxing.Netは最速です。ただShift-JISにはそもそも対応していない。
後、バージョンに対するサイズの考え方が雑な気がする。他のライブラリに比べすぐに範囲外のエラーになる。
たぶん不具合。
ThoughtWorks.QRCodeは範囲に関する考え方が仕様に忠実。
ただ、やたら例外を投げてくる印象を受けた。正しいことやってるのにね。
ちゃんとcatchしてあげないといけない。
比較動画
何となく雰囲気はつかめるでしょうか?
動画の作りが雑なのは僕の動画スキルのせいです。
僕が一番知りたかったこと
みんな同じQRコードを作っているのか?
00000の文字列で試してみた
全然違いますね。
222の文字列で試してみた
何となく似てるのが出てこないかと色々やってみて似ているのが出てきた"222"です。
xingとDotNetBarcodeが似ています
良ーく見ると違うので、誰も得しない間違い探しでもしてみてください。
間違いはN箇所あります。
このブログのURL
https://www.premium-tsubu-hero.net/
で試してみました。
ん?もしかして完全一致?いや、違うな・・・。
同じ文字列で作ったQRコードはライブラリが違っても同じなのか?
の疑問を解消すべく今回の記事を作成しました。
結論としては早々に出ていて特に面白くもなんともない「違う」が答えでした。
途中から趣旨が変わって全く同じになる文字列を探しましたが結局見つけられず仕舞い。
案外一致しない。そういうもんなのかね。
QRコード見比べてる内に
QRコード同士の相違部分を比較するツールでもつくろうかなぁ・・・。
って気になりました。
誰もうれしくない間違い探しツールができそう。
いや、そもそも間違い探しって絵の相違点を探して何が嬉しいんだろう。
そう考えるとQRコードの間違い探しってのも悪くないかもしれない。
・・・いや、やめとこう。
QRコードを作成するC#のライブラリ比較
おわり
コメントを残す