本帖最后由 yeban 于 2019-7-17 20:35 编辑
windows、mac
二维码 生成 识别
mac:https://pan.baidu.com/s/10dXutco3wQsqhhjF1ajucA
windows:https://pan.baidu.com/s/1SzzPYNtaYMA77FemnS8UsQ
源码丑陋,大家指教指教
[Golang] 纯文本查看 复制代码 package main
import (
"github.com/andlabs/ui"
_ "github.com/andlabs/ui/winmanifest"
"github.com/skip2/go-qrcode"
"github.com/tanlio/tltool"
"math/rand"
"os"
"strconv"
"time"
)
func main() {
err := ui.Main(func() {
//创建输入框
pathFile := ui.NewEntry()
//创建按钮
button := ui.NewButton("选择二维码")
button2 := ui.NewButton("识别二维码")
button3 := ui.NewButton("生成二维码")
//创建输入框
greeting := ui.NewEntry()
//纵向排列
div := ui.NewVerticalBox()
//水平排列
box2 := ui.NewHorizontalBox()
box2.Append(button, true)
box2.Append(button2, true)
box2.Append(button3, true)
box2.SetPadded(true)
//水平排列
box3 := ui.NewHorizontalBox()
box3.Append(greeting, true)
box3.SetPadded(true)
//全部进行竖向排列
div.Append(pathFile, true)
div.Append(box2, false)
div.Append(box3, true)
//格式排列
div.SetPadded(true)
//创建window窗口。并设置长宽。
window := ui.NewWindow("识别二维码应用程序", 300, 400, true)
//mac不支持居中。
window.SetChild(div)
//是否留出边距
window.SetMargined(true)
//按钮点击操作
button.OnClicked(func(*ui.Button) {
mainWin := ui.NewWindow("libui Control Gallery", 640, 480, true)
codePath := ui.OpenFile(mainWin)
pathFile.SetText(codePath)
})
button2.OnClicked(func(*ui.Button) {
//可以直接打印日志。
path := pathFile.Text()
if len(path) == 0 {
greeting.SetText("识别失败,请选择二维码..")
}
fi, err := os.Open(path)
if err != nil {
greeting.SetText("识别失败,没有找到图片..")
return
}
defer fi.Close()
qrCodeStr, err := tltool.QRCodeParse(fi)
if err != nil {
greeting.SetText("识别失败,换一张试试..")
return
}
greeting.SetText(qrCodeStr)
})
button3.OnClicked(func(*ui.Button) {
content := pathFile.Text()
if len(content) == 0 {
greeting.SetText("生成失败,请输入信息..")
return
}
fileName := "qr" + strconv.Itoa(int(time.Now().Unix())) + strconv.Itoa(rand.Intn(1000)) + ".png"
err := qrcode.WriteFile(content, qrcode.Medium, 256, fileName)
if err != nil {
greeting.SetText("生成失败,请重试..")
return
}
msg := "生成成功,文件地址:\n./" + fileName
greeting.SetText(msg)
})
window.OnClosing(func(*ui.Window) bool {
ui.Quit()
return true
})
window.Show()
})
if err != nil {
panic(err)
}
}
|