diff --git a/.gitignore b/.gitignore index dba14d9..99e2e24 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ *.zpl -*.png +cmd/zplgfa/*.png cmd/zplgfa/zplgfa diff --git a/README.md b/README.md index 3b81789..601c1ef 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![Go Report Card](https://goreportcard.com/badge/github.com/SimonWaldherr/zplgfa)](https://goreportcard.com/report/github.com/SimonWaldherr/zplgfa) [![codebeat badge](https://codebeat.co/badges/28d795af-6f9b-453a-94c2-4fafb8b5b0d5)](https://codebeat.co/projects/github-com-simonwaldherr-zplgfa-master) [![BCH compliance](https://bettercodehub.com/edge/badge/SimonWaldherr/zplgfa?branch=master)](https://bettercodehub.com/results/SimonWaldherr/zplgfa) +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FSimonWaldherr%2Fzplgfa.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FSimonWaldherr%2Fzplgfa?ref=badge_shield) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/SimonWaldherr/zplgfa/master/LICENSE) The ZPLGFA Golang package implements some functions to convert PNG, JPEG and GIF files to ZPL compatible ^GF-elements ([Graphic Fields](https://www.zebra.com/us/en/support-downloads/knowledge-articles/gf-graphic-field-zpl-command.html)). diff --git a/test.png b/test.png new file mode 100644 index 0000000..455f414 Binary files /dev/null and b/test.png differ diff --git a/zplgfa_test.go b/zplgfa_test.go index bde8965..3ee3ea9 100644 --- a/zplgfa_test.go +++ b/zplgfa_test.go @@ -1,7 +1,14 @@ package zplgfa import ( + "image" + _ "image/gif" + _ "image/jpeg" + _ "image/png" + "log" + "os" "testing" + "strings" ) func Test_CompressASCII(t *testing.T) { @@ -9,3 +16,44 @@ func Test_CompressASCII(t *testing.T) { t.Fatalf("CompressASCII failed") } } + +func Test_ConvertToZPL(t *testing.T) { + // open file + file, err := os.Open("./test.png") + if err != nil { + log.Printf("Warning: could not open the file: %s\n", err) + return + } + + defer file.Close() + + // load image head information + config, format, err := image.DecodeConfig(file) + if err != nil { + log.Printf("Warning: image not compatible, format: %s, config: %v, error: %s\n", format, config, err) + } + + // reset file pointer to the beginning of the file + file.Seek(0, 0) + + // load and decode image + img, _, err := image.Decode(file) + if err != nil { + log.Printf("Warning: could not decode the file, %s\n", err) + return + } + + // flatten image + flat := FlattenImage(img) + + // convert image to zpl compatible type + gfimg := ConvertToZPL(flat, CompressedASCII) + + // remove whitespace - only for the test + gfimg = strings.Replace(gfimg, " ", "", -1) + gfimg = strings.Replace(gfimg, "\n", "", -1) + + if gfimg != "^XA,^FS^FO0,0^GFA,32,51,3,,::01C000::,001C00::,1DDC00::,::^FS,^XZ" { + t.Fatalf("ConvertToZPL failed") + } +}