model.go 949 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package renderer
  2. import (
  3. "errors"
  4. "image/jpeg"
  5. "os"
  6. "path/filepath"
  7. )
  8. // Generate thumbnail for 3D model. Output file will have the same name as the input file with .jpg extension
  9. func generateThumbnailForModel(inputFile string, outputFolder string) error {
  10. if _, err := os.Stat(inputFile); os.IsNotExist(err) {
  11. return errors.New("input file does not exist")
  12. }
  13. //Generate a render of the 3d model
  14. outputFile := filepath.Join(outputFolder, filepath.Base(inputFile)+".jpg")
  15. r := New3DRenderer(RenderOption{
  16. Color: "#f2f542",
  17. BackgroundColor: "#ffffff",
  18. Width: 480,
  19. Height: 480,
  20. })
  21. img, err := r.RenderModel(inputFile)
  22. if err != nil {
  23. return err
  24. }
  25. opt := jpeg.Options{
  26. Quality: 90,
  27. }
  28. f, err := os.Create(outputFile)
  29. if err != nil {
  30. return err
  31. }
  32. err = jpeg.Encode(f, img, &opt)
  33. if err != nil {
  34. return err
  35. }
  36. f.Close()
  37. return nil
  38. }