Skip to content

Instantly share code, notes, and snippets.

@ifq
Created August 19, 2013 11:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ifq/6268096 to your computer and use it in GitHub Desktop.
Save ifq/6268096 to your computer and use it in GitHub Desktop.
speed test for github.com/nfnt/resize.
package main
import (
"github.com/nfnt/resize"
"os"
"path/filepath"
"image"
"image/jpeg"
"log"
"errors"
"flag"
"time"
)
func main() {
flag.Parse()
file := flag.Arg(0)
tpath := []string{"1.jpg", "2.jpg"}
size := []image.Point{{100,0}, {600,0}}
start := time.Now()
ResizeImg(file, tpath, size)
end := time.Now()
println("time consumed: ", end.Sub(start))
}
func ResizeImg(spath string, tpath []string, size []image.Point) (int, error) {
if len(tpath) != len(size) {
log.Println("GetImgThumb: ", tpath, size)
return 0, errors.New("GetImgThumb length unsafe")
}
file, err := os.Open(spath)
if err != nil {
return 0, err
}
img, err := jpeg.Decode(file)
if err != nil {
log.Println(err)
return 0, err
}
file.Close()
cnt := 0
for i, tgt := range tpath {
_, err := os.Stat(tgt)
if err != nil {
if !os.IsNotExist(err) {
log.Println(err)
continue
}
// 创建文件夹
os.MkdirAll(filepath.Dir(tgt), 0755)
m1 := time.Now()
m := resize.Resize(uint(size[i].X), uint(size[i].Y), img, resize.NearestNeighbor)
m2 := time.Now()
println("time consumed sub: ", i, m2.Sub(m1))
out, err := os.Create(tgt)
if err != nil {
log.Println(err)
continue
}
// write new image to file
jpeg.Encode(out, m, nil)
out.Close()
cnt++
}
}
return cnt, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment