model.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package metadata
  2. import (
  3. "errors"
  4. "image/jpeg"
  5. "os"
  6. "path/filepath"
  7. "imuslab.com/arozos/mod/filesystem/renderer"
  8. )
  9. func generateThumbnailForModel(cacheFolder string, file string, generateOnly bool) (string, error) {
  10. if !fileExists(file) {
  11. //The user removed this file before the thumbnail is finished
  12. return "", errors.New("Source not exists")
  13. }
  14. //Generate a render of the 3d model
  15. outputFile := cacheFolder + filepath.Base(file) + ".jpg"
  16. r := renderer.NewRenderer(renderer.RenderOption{
  17. Color: "#f2f542",
  18. BackgroundColor: "#ffffff",
  19. Width: 480,
  20. Height: 480,
  21. })
  22. img, err := r.RenderModel(file)
  23. opt := jpeg.Options{
  24. Quality: 90,
  25. }
  26. f, err := os.Create(outputFile)
  27. if err != nil {
  28. return "", err
  29. }
  30. err = jpeg.Encode(f, img, &opt)
  31. f.Close()
  32. if !generateOnly && fileExists(outputFile) {
  33. //return the image as well
  34. ctx, err := getImageAsBase64(outputFile)
  35. return ctx, err
  36. } else if !fileExists(outputFile) {
  37. return "", errors.New("Image generation failed")
  38. }
  39. return "", nil
  40. }