-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
38 lines (32 loc) · 1.17 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
import (
"flag"
"fmt"
"regexp"
"strings"
)
func main() {
var inputFileName, outputFileName string
var x, y, width, height int
flag.StringVar(&inputFileName, "input", "input/data.csv", "Input CSV file")
flag.StringVar(&outputFileName, "output", "output/"+getDefaultOutputFileName(inputFileName), "Output file")
flag.IntVar(&x, "x", 0, "Starting point (X)")
flag.IntVar(&y, "y", 0, "Starting point (Y)")
flag.IntVar(&width, "width", 1000, "Rectangle width")
flag.IntVar(&height, "height", 500, "Rectangle height")
flag.Parse()
backgroundCanvas := Rectangle{x, y, width, height, false}
dataList := readCsvData(inputFileName)
mosaicImageInput := CreateMosaicImageInput(dataList, backgroundCanvas)
backgroundImage := createBackground(&backgroundCanvas)
fmt.Println(mosaicImageInput)
for _, rectangle := range mosaicImageInput.list {
drawRectangleOnBackround(backgroundImage, &rectangle)
}
saveMosaicImageAsPng(outputFileName, *backgroundImage)
}
func getDefaultOutputFileName(inputFilePath string) string {
re := regexp.MustCompile("[a-zA-Z0-9]+\\.")
match := re.FindStringSubmatch(inputFilePath)
return "out_" + strings.Split(match[0], ".")[0] + ".png"
}