makiuchi-d / gozxing

Port of ZXing (https://github.com/zxing/zxing) core to pure Go.
Other
564 stars 65 forks source link

Won't work with UPCA barcode #71

Open eiachh opened 2 months ago

eiachh commented 2 months ago

Hi I am trying to use this lib, and it works great with QR codes and code128, but when I try to use UPCA/E or EAN8/13 it just does not work.

Could you tell me if this should work in theory? ` file, err := os.Open("image.png")

if err != nil {
    fmt.Println("Error opening file:", err)
    return
}
defer file.Close()

img, _, err := image.Decode(file)
if err != nil {
    fmt.Println("Error decoding image:", err)
    return
}

// Prepare BinaryBitmap
bmp, err := gozxing.NewBinaryBitmapFromImage(img)
if err != nil {
    fmt.Println("Error creating BinaryBitmap:", err)
    return
}

// Decode the barcode
reader := oned.NewUPCAReader()
result, err := reader.Decode(bmp, nil)
if err != nil {
    fmt.Println("Error decoding barcode:", err)
    return
}

fmt.Println("Decoded text:", result.GetText())`

This is my image that other tools can parse easily

image

makiuchi-d commented 2 months ago

It looks like there isn't enough white space on the right side.

I got the result with this code:

    img2 := image.NewRGBA(image.Rect(0, 0, 600, 356))
    draw.Draw(img2, img2.Bounds(), image.White, image.Pt(0, 0), draw.Over)
    draw.Draw(img2, image.Rect(0, 0, 559, 356), img, image.Pt(0, 0), draw.Over)

    // Prepare BinaryBitmap
    bmp, err := gozxing.NewBinaryBitmapFromImage(img2)