diff options
Diffstat (limited to 'autoimages.go')
-rw-r--r-- | autoimages.go | 149 |
1 files changed, 83 insertions, 66 deletions
diff --git a/autoimages.go b/autoimages.go index 983e12c..54a7a0f 100644 --- a/autoimages.go +++ b/autoimages.go @@ -20,15 +20,15 @@ along with AutoArt. If not, see <https://www.gnu.org/licenses/>. package main import ( - "fmt" - "bufio" - "github.com/pommicket/autoart/autoart" - "github.com/pommicket/autoart/autoutils" - "os" - "image/png" - "math/rand" - "time" + "bufio" + "fmt" + "github.com/pommicket/autoart/autoart" + "github.com/pommicket/autoart/autoutils" "image" + "image/png" + "math/rand" + "os" + "time" ) // AutoImages client @@ -40,85 +40,102 @@ func genImage(width int, height int, paletted bool, conf *autoart.Config, pconf } else { img = autoart.GenerateImage(width, height, *conf) } - file, err := os.Create(filename) - if err != nil { return err } - err = png.Encode(file, img) - if err != nil { - file.Close() - return err - } - return file.Close() + file, err := os.Create(filename) + if err != nil { + return err + } + err = png.Encode(file, img) + if err != nil { + file.Close() + return err + } + return file.Close() } func batchedImages(seed int64, width int, height int, paletted bool, conf *autoart.Config, pconf *autoart.PaletteConfig, number int64) error { - // Create a directory for the images + // Create a directory for the images rand.Seed(seed) dir := fmt.Sprintf("autoimages%v", seed) - err := os.MkdirAll(dir, 0700) - if err != nil { return err } - err = autoutils.RunInBatches(number, "Generating images...", func (n int64, errs chan<- error) { - filename := fmt.Sprintf("%v/%09d.png", dir, n) - errs <- genImage(width, height, paletted, conf, pconf, filename) - }) + err := os.MkdirAll(dir, 0700) + if err != nil { + return err + } + err = autoutils.RunInBatches(number, "Generating images...", func(n int64, errs chan<- error) { + filename := fmt.Sprintf("%v/%09d.png", dir, n) + errs <- genImage(width, height, paletted, conf, pconf, filename) + }) - if err != nil { return err } - fmt.Println("Done! Your images are in this directory:", dir) - return nil + if err != nil { + return err + } + fmt.Println("Done! Your images are in this directory:", dir) + return nil } func autoImages(reader *bufio.Reader) error { - prompt := `How many options do you want? + prompt := `How many options do you want? 1. None - Just make an image 2. Some - Basic options 3. All - Advanced options Please enter 1, 2, or 3 (default: 1): ` - option, err := readInt64(reader, prompt, func (i int64) bool { - return i >= 1 && i <= 3 - }, 1) - if err != nil { - return err - } - var conf autoart.Config + option, err := readInt64(reader, prompt, func(i int64) bool { + return i >= 1 && i <= 3 + }, 1) + if err != nil { + return err + } + var conf autoart.Config var pconf autoart.PaletteConfig - t := time.Now().UTC().UnixNano() - if option == 1 { - rand.Seed(t) - fmt.Println("Generating image...") - filename := fmt.Sprintf("autoimages%d.png", t) - err = genImage(1920, 1080, false, &conf, &pconf, filename) - if err != nil { - // We're done! - fmt.Println("Generated an image:", filename) - } - return err - } - // Basic options - positive := func (i int64) bool { return i > 0 } - width, err := readInt64(reader, "Width (default: 1920)? ", positive, 1920) - if err != nil { return err } - height, err := readInt64(reader, "Height (default: 1080)? ", positive, 1080) - if err != nil { return err } - number, err := readInt64(reader, "How many (default: 1)? ", positive, 1) - if err != nil { return err } - if option == 2 { - return batchedImages(t, int(width), int(height), false, &conf, &pconf, number) - } + t := time.Now().UTC().UnixNano() + if option == 1 { + rand.Seed(t) + fmt.Println("Generating image...") + filename := fmt.Sprintf("autoimages%d.png", t) + err = genImage(1920, 1080, false, &conf, &pconf, filename) + if err != nil { + // We're done! + fmt.Println("Generated an image:", filename) + } + return err + } + // Basic options + positive := func(i int64) bool { return i > 0 } + width, err := readInt64(reader, "Width (default: 1920)? ", positive, 1920) + if err != nil { + return err + } + height, err := readInt64(reader, "Height (default: 1080)? ", positive, 1080) + if err != nil { + return err + } + number, err := readInt64(reader, "How many (default: 1)? ", positive, 1) + if err != nil { + return err + } + if option == 2 { + return batchedImages(t, int(width), int(height), false, &conf, &pconf, number) + } paletted, err := readBool(reader, "Should a palette be used (y/n, default: n)? ", false) - if err != nil { return err } - + if err != nil { + return err + } - // Advanced options + // Advanced options if paletted { err = readPaletteConf(reader, &pconf) - if err != nil { return err } + if err != nil { + return err + } } else { err = readConf(reader, &conf) - if err != nil { return err } + if err != nil { + return err + } } - seed, err := readInt64(reader, "Random seed (default: current time)? ", func (i int64) bool { - return true - }, t) + seed, err := readInt64(reader, "Random seed (default: current time)? ", func(i int64) bool { + return true + }, t) - return batchedImages(seed, int(width), int(height), paletted, &conf, &pconf, number) + return batchedImages(seed, int(width), int(height), paletted, &conf, &pconf, number) } |