Created Content String (markdown)
parent
41c121428e
commit
4c49a3659c
|
@ -0,0 +1,73 @@
|
|||
To add the content of the barcode to an image below the barcode you can use and extend the following sample code:
|
||||
|
||||
```golang
|
||||
package main
|
||||
|
||||
import (
|
||||
"image"
|
||||
"image/color"
|
||||
"image/draw"
|
||||
"image/png"
|
||||
"os"
|
||||
|
||||
"github.com/boombuler/barcode"
|
||||
"github.com/boombuler/barcode/code128"
|
||||
"golang.org/x/image/font"
|
||||
"golang.org/x/image/font/basicfont"
|
||||
"golang.org/x/image/math/fixed"
|
||||
)
|
||||
|
||||
func subtitleBarcode(bc barcode.Barcode) image.Image {
|
||||
fontFace := basicfont.Face7x13
|
||||
fontColor := color.RGBA{0, 0, 0, 255}
|
||||
margin := 5 // Space between barcode and text
|
||||
|
||||
// Get the bounds of the string
|
||||
bounds, _ := font.BoundString(fontFace, bc.Content())
|
||||
|
||||
widthTxt := int((bounds.Max.X - bounds.Min.X) / 64)
|
||||
heightTxt := int((bounds.Max.Y - bounds.Min.Y) / 64)
|
||||
|
||||
// calc width and height
|
||||
width := widthTxt
|
||||
if bc.Bounds().Dx() > width {
|
||||
width = bc.Bounds().Dx()
|
||||
}
|
||||
height := heightTxt + bc.Bounds().Dy() + margin
|
||||
|
||||
// create result img
|
||||
img := image.NewRGBA(image.Rect(0, 0, width, height))
|
||||
// draw the barcode
|
||||
draw.Draw(img, image.Rect(0, 0, bc.Bounds().Dx(), bc.Bounds().Dy()), bc, bc.Bounds().Min, draw.Over)
|
||||
|
||||
// TextPt
|
||||
offsetY := bc.Bounds().Dy() + margin - int(bounds.Min.Y/64)
|
||||
offsetX := (width - widthTxt) / 2
|
||||
|
||||
point := fixed.Point26_6{
|
||||
X: fixed.Int26_6(offsetX * 64),
|
||||
Y: fixed.Int26_6(offsetY * 64),
|
||||
}
|
||||
|
||||
d := &font.Drawer{
|
||||
Dst: img,
|
||||
Src: image.NewUniform(fontColor),
|
||||
Face: fontFace,
|
||||
Dot: point,
|
||||
}
|
||||
d.DrawString(bc.Content())
|
||||
return img
|
||||
}
|
||||
|
||||
func main() {
|
||||
content := "My fancy Barcode"
|
||||
bcImg, _ := code128.Encode(content)
|
||||
scaled, _ := barcode.Scale(bcImg, bcImg.Bounds().Dx(), 80)
|
||||
|
||||
img := subtitleBarcode(scaled)
|
||||
|
||||
f, _ := os.Create("barcode.png")
|
||||
defer f.Close()
|
||||
png.Encode(f, img)
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue