package main import ( "image" "log" "os" "github.com/disintegration/gift" _ "image/jpeg" "image/png" ) type ImageFilters struct { Colorize [3]float32 Contrast int Gamma float64 } func loadImage(filename string) image.Image { f, err := os.Open(filename) log.Println("filename: ", filename) if err != nil { log.Fatalf("os.Open failed: %v", err) } defer f.Close() img, _, err := image.Decode(f) if err != nil { log.Fatalf("image.Decode failed: %v", err) } return img } func saveImage(filename string, img image.Image) { log.Println("new filename: ", filename) f, err := os.Create(filename) if err != nil { log.Fatalf("os.Create failed: %v", err) } defer f.Close() err = png.Encode(f, img) if err != nil { log.Fatalf("png.Encode failed: %v", err) } } func processImage(img image.Image, config Config) image.Image { cArgs := config.Colorize g := gift.New( gift.Colorize(cArgs[0], cArgs[1], cArgs[2]), gift.Contrast(float32(config.Contrast)), gift.Gamma(float32(config.Gamma)), ) dst := image.NewRGBA(g.Bounds(img.Bounds())) g.Draw(dst, img) return dst }