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  }