我尝试创建了一个用于生成QR码的Go语言软件包

非常高兴认识大家,我是第一次在Qiita上发表帖子的初学者。从今年夏天开始,我开始阅读一本关于Golang的书籍,并在学习过程中想到了想要用Golang编写一个生成QR码的包并尝试自己制作。The Github link is here. 注意,这仅仅是为了学习Golang而制作的项目,不能完全保证其完整功能。另外,由于仅记录了QR码的版本信息至版本7,因此仅能生成7版本以下的QR码。

使用方法

package main
import (qrcode "github.com/taiga533/GO-QRMaker")

func main () {
  //pngとしてQRコードを出力します。
  //qrcode.SimplyEncode("QRコードにするデータ", "ファイルパス+ファイル名", 誤り訂正レベル[1~4], 画像サイズ[3倍なら3])
  err := qrcode.SimplyEncode("テスト文字列", ."/output/qrcode", 4, 2)
}

这样的感觉。

在制作过程中遇到了一些困难

    • 誤り訂正符号の実装

 

    • JISの規格書(X 0510)を読めば分かる話なのですが、QRコードはBCH符号やRS符号といった誤り訂正符号を利用しQRコードの読み取り精度を上げています。

 

    • この誤り訂正符号が数学に弱い私にとっては曲者でITレストラン様やyamicha.com’s Blog様を拝見しながら気合で実装しました。

 

    • sliceを扱う

 

    golangにおける可変長配列であるsliceの扱いでコピー先の値を変更したらコピー元の値も変更されているとかをたまに忘れしまったりして苦労しました。

我认为做了之后感到很好的事情

    • golangに対する理解が深まった

 

    • スターティングgo言語という本を読んだ後に作ったのですが、本を読むだけより良かったのかなと思います。

 

    • QRコードにとても詳しくなった気がする

 

    すごいどうでもいいことですが最近街中でQRコードを見かけると(このQRコードのバージョンいくつだ?)とか思うようになった。

对过去的后悔和未来的展望

由于本次尽量优先考虑自己思考的原因,因此认为将二进制转换为字符串进行处理是一个糟糕的点。后来在GitHub上查看了Go语言的QR码生成包时,发现它能够正确地将其作为数值进行处理,所以应该参考它的方法。因此,今后在创作其他东西时,我会继续参考他人的代码。

另外需要注意的是,我没有实现掩码处理中的(1:1:3:1:1深:浅:深:浅:深)的模式,敬请注意。

广告
将在 10 秒后关闭
bannerAds