github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/exp/shiny/example/goban/asset/resize.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build ignore 6 7 // Custom image resizer. Saved for posterity. 8 9 package main 10 11 import ( 12 "flag" 13 "fmt" 14 "image" 15 "image/jpeg" 16 _ "image/png" 17 "log" 18 "os" 19 20 "golang.org/x/image/draw" 21 ) 22 23 var n = flag.Int("n", 0, "number of pixels to inset before scaling") 24 25 func main() { 26 flag.Parse() 27 fmt.Println(flag.Args()) 28 for _, s := range flag.Args() { 29 resize(s) 30 } 31 } 32 33 func resize(s string) { 34 in, err := os.Open(s) 35 if err != nil { 36 log.Fatal(err) 37 } 38 defer in.Close() 39 src, _, err := image.Decode(in) 40 if err != nil { 41 log.Fatal(err) 42 } 43 name := "../" + s 44 out, err := os.Create(name) 45 fmt.Println(name) 46 if err != nil { 47 log.Fatal(err) 48 } 49 defer out.Close() 50 dst := image.NewGray(image.Rect(0, 0, 256, 256)) 51 draw.Draw(dst, dst.Bounds(), image.White, image.ZP, draw.Src) 52 dr := image.Rect(*n, *n, 256-*n, 256-*n) 53 draw.ApproxBiLinear.Scale(dst, dr, src, src.Bounds(), draw.Src, nil) 54 err = jpeg.Encode(out, dst, nil) 55 if err != nil { 56 log.Fatal(err) 57 } 58 }