123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package metadata
- import (
- "errors"
- "image/jpeg"
- "path/filepath"
- "imuslab.com/arozos/mod/filesystem"
- "imuslab.com/arozos/mod/filesystem/renderer"
- )
- func generateThumbnailForModel(fsh *filesystem.FileSystemHandler, cacheFolder string, file string, generateOnly bool) (string, error) {
- if fsh.RequireBuffer {
- return "", nil
- }
- fshAbs := fsh.FileSystemAbstraction
- if !fshAbs.FileExists(file) {
- //The user removed this file before the thumbnail is finished
- return "", errors.New("Source not exists")
- }
- //Generate a render of the 3d model
- outputFile := cacheFolder + filepath.Base(file) + ".jpg"
- r := renderer.NewRenderer(renderer.RenderOption{
- Color: "#f2f542",
- BackgroundColor: "#ffffff",
- Width: 480,
- Height: 480,
- })
- img, _ := r.RenderModel(file)
- opt := jpeg.Options{
- Quality: 90,
- }
- f, err := fshAbs.Create(outputFile)
- if err != nil {
- return "", err
- }
- jpeg.Encode(f, img, &opt)
- f.Close()
- if !generateOnly && fshAbs.FileExists(outputFile) {
- //return the image as well
- ctx, err := getImageAsBase64(fsh, outputFile)
- return ctx, err
- } else if !fshAbs.FileExists(outputFile) {
- return "", errors.New("Image generation failed")
- }
- return "", nil
- }
|