// Encode encodes a string using the given version, level, and mask. func Encode(w http.ResponseWriter, req *http.Request) { val := func(s string) int { v, _ := strconv.Atoi(req.FormValue(s)) return v } l := coding.Level(val("l")) v := coding.Version(val("v")) enc := coding.String(req.FormValue("t")) m := coding.Mask(val("m")) p, err := coding.NewPlan(v, l, m) if err != nil { panic(err) } cc, err := p.Encode(enc) if err != nil { panic(err) } c := &qr.Code{Bitmap: cc.Bitmap, Size: cc.Size, Stride: cc.Stride, Scale: 8} w.Header().Set("Content-Type", "image/png") w.Header().Set("Cache-Control", "public, max-age=3600") w.Write(c.PNG()) }
func makeMask(req *http.Request, font string, pt int, vers, mask, scale int) image.Image { p, err := coding.NewPlan(coding.Version(vers), coding.L, coding.Mask(mask)) if err != nil { panic(err) } m := makeImage(req, maskName[mask], font, pt, len(p.Pixel), 0, scale, func(x, y int) uint32 { pix := p.Pixel[y][x] switch pix.Role() { case coding.Data, coding.Check: if pix&coding.Invert != 0 { return 0x000000ff } } return 0xffffffff }) return m }