noita-mapcap/bin/stitch/stitch.go
David Vogel b11ba98db7 Update stitching program
- Divide workload into chunks
- Add multithreading
- Add console messages
- Add progress bar
- Unload tile images after some time
- Fix median filter
2019-10-24 00:28:22 +02:00

64 lines
1.4 KiB
Go

// Copyright (c) 2019 David Vogel
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
package main
import (
"image"
"image/png"
"log"
"os"
"path/filepath"
)
var inputPath = filepath.Join(".", "..", "..", "output")
func main() {
log.Printf("Starting to read tile information at \"%v\"", inputPath)
tiles, err := loadImages(inputPath)
if err != nil {
log.Panic(err)
}
log.Printf("Got %v tiles", len(tiles))
/*f, err := os.Create("cpu.prof")
if err != nil {
log.Panicf("could not create CPU profile: %v", err)
}
defer f.Close()
if err := pprof.StartCPUProfile(f); err != nil {
log.Panicf("could not start CPU profile: %v", err)
}
defer pprof.StopCPUProfile()*/
outputRect := image.Rect(-10000, -10000, 10000, 10000)
log.Printf("Creating output image with a size of %v", outputRect.Size())
outputImage := image.NewRGBA(outputRect)
log.Printf("Stitching %v tiles into an image at %v", len(tiles), outputImage.Bounds())
tp := make(tilePairs)
if err := tp.StitchGrid(tiles, outputImage, 256); err != nil {
log.Panic(err)
}
log.Printf("Creating output file \"%v\"", "output.png")
f, err := os.Create("output.png")
if err != nil {
log.Panic(err)
}
if err := png.Encode(f, outputImage); err != nil {
f.Close()
log.Panic(err)
}
if err := f.Close(); err != nil {
log.Panic(err)
}
log.Printf("Created output file \"%v\"", "output.png")
}