|
@@ -0,0 +1,45 @@
|
|
|
+package ml
|
|
|
+
|
|
|
+import (
|
|
|
+ "bytes"
|
|
|
+ "encoding/base64"
|
|
|
+ "flow/flowserver"
|
|
|
+ "image"
|
|
|
+ "image/png"
|
|
|
+)
|
|
|
+
|
|
|
+// Test
|
|
|
+func toGrayImage(data []float64, w, h int) (flowserver.Base64Data, error) {
|
|
|
+ // Convert matrix to byte 0-255
|
|
|
+
|
|
|
+ /*bdata := make([]byte, w*h)
|
|
|
+ for i, v := range data {
|
|
|
+ bdata[i] = byte(v * 255)
|
|
|
+ }*/
|
|
|
+
|
|
|
+ img := image.NewGray(image.Rect(0, 0, w, h))
|
|
|
+ for i, v := range data {
|
|
|
+ img.Pix[i] = byte(v * 255)
|
|
|
+ }
|
|
|
+ pngEncoded := bytes.NewBuffer(nil)
|
|
|
+
|
|
|
+ err := png.Encode(pngEncoded, img)
|
|
|
+ if err != nil {
|
|
|
+ return flowserver.Base64Data([]byte{}), err
|
|
|
+ }
|
|
|
+
|
|
|
+ base64enc := base64.StdEncoding.EncodeToString(pngEncoded.Bytes())
|
|
|
+
|
|
|
+ out := bytes.NewBuffer(nil)
|
|
|
+ out.WriteString("data:image/png;base64,")
|
|
|
+ out.WriteString(base64enc)
|
|
|
+
|
|
|
+ return flowserver.Base64Data(out.String()), nil
|
|
|
+
|
|
|
+ /*for y:=0;y<h;y++ {
|
|
|
+ for x:=0;x<w;x++ {
|
|
|
+ bdata[x + y *w] = data[
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+
|
|
|
+}
|