diff --git a/BUILDING.md b/BUILDING.md new file mode 100644 index 00000000..b42f3eab --- /dev/null +++ b/BUILDING.md @@ -0,0 +1,33 @@ +# BUILDING + +Any mention of *mountains.jpg* is the following file: +https://github.com/coder0107git/sqip/blob/wasm-primitive/packages/sqip-plugin-primitive/mountains.jpg + +## WASI +### Building +```bash +GOOS=wasip1 GOARCH=wasm go build -o ./primitive.wasi.wasm ./main.go +``` + +### Usage +```bash +IMAGE="[some base64 encoded image]" wasmtime run --env IMAGE ./primitive.wasi.wasm -i env_var_base64 -o - -n 50 -m 1 -s 2500 -rep 0 -a 128 -bg 344b57 -j 0 -vv +``` +or +```bash +wasmtime --dir .::/ ./primitive.wasi.wasm -i /mountains.jpg -o mountains.primitive.svg -n 50 -m 1 -s 2500 -rep 0 -a 128 -bg 344b57 -j 0 -vv +``` +or +```bash +cat ./mountains.jpg | wasmtime run ./primitive.wasi.wasm -i - -o - -n 50 -m 1 -s 2500 -rep 0 -a 128 -bg 344b57 -j 0 -vv +``` + +## Web WASM +```bash +GOOS=js GOARCH=wasm go build -o ./primitive.web.wasm ./main.go +``` + +### Usage +*To be determined when web MVP works* + +MVP: https://github.com/coder0107git/sqip/blob/wasm-primitive/packages/sqip-plugin-primitive/index.html diff --git a/go.mod b/go.mod index b49608ac..6914d98e 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/hashbite/primitive +module self/primitive go 1.17 diff --git a/main.go b/main.go index 0075c4d8..c6d31841 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ import ( "strings" "time" - "github.com/hashbite/primitive/primitive" + "self/primitive/primitive" "github.com/nfnt/resize" ) diff --git a/primitive/util.go b/primitive/util.go index 83446cdf..d97b3271 100644 --- a/primitive/util.go +++ b/primitive/util.go @@ -1,6 +1,9 @@ package primitive import ( + "encoding/base64" + //"bytes" + "strings" "fmt" "image" "image/color" @@ -20,6 +23,21 @@ func LoadImage(path string) (image.Image, error) { if path == "-" { im, _, err := image.Decode(os.Stdin) return im, err + } else if path == "env_var_base64" { + //file, err := os.Open(path) + /*file, err := base64.RawStdEncoding.DecodeString(path) + if err != nil { + return nil, err + } + + r := bytes.NewReader(byteData) + + defer r.Close()*/ + + reader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(os.Getenv("IMAGE"))) + + im, _, err := image.Decode(reader) //(r) + return im, err } else { file, err := os.Open(path) if err != nil {