Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

51 linhas
857 B

  1. package media
  2. import (
  3. "image"
  4. "image/jpeg"
  5. "os"
  6. "path"
  7. "github.com/nfnt/resize"
  8. )
  9. func imageSize(name string) (image.Rectangle, error) {
  10. f, err := os.Open(name)
  11. if err != nil {
  12. return image.ZR, err
  13. }
  14. defer f.Close()
  15. cfg, _, err := image.DecodeConfig(f)
  16. if err != nil {
  17. return image.ZR, err
  18. }
  19. width := cfg.Width
  20. height := cfg.Height
  21. return image.Rect(0, 0, width, height), nil
  22. }
  23. func ThumbImage(filename string, img image.Image, size image.Rectangle) error {
  24. os.MkdirAll(path.Dir(filename), 0755)
  25. fthumb, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0655)
  26. if err != nil {
  27. return err
  28. }
  29. img = resize.Resize(uint(size.Dx()), uint(size.Dy()), img, resize.Bilinear)
  30. err = jpeg.Encode(fthumb, img, nil)
  31. if err != nil {
  32. return err
  33. }
  34. err = fthumb.Close()
  35. if err != nil {
  36. return err
  37. }
  38. return nil
  39. }