mirror of https://github.com/stashapp/stash.git
39 lines
814 B
Go
39 lines
814 B
Go
![]() |
package transcoder
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
|
||
|
"github.com/stashapp/stash/pkg/ffmpeg"
|
||
|
)
|
||
|
|
||
|
var ErrUnsupportedFormat = errors.New("unsupported image format")
|
||
|
|
||
|
type ImageThumbnailOptions struct {
|
||
|
InputFormat ffmpeg.ImageFormat
|
||
|
OutputPath string
|
||
|
MaxDimensions int
|
||
|
Quality int
|
||
|
}
|
||
|
|
||
|
func ImageThumbnail(input string, options ImageThumbnailOptions) ffmpeg.Args {
|
||
|
var videoFilter ffmpeg.VideoFilter
|
||
|
videoFilter = videoFilter.ScaleMaxSize(options.MaxDimensions)
|
||
|
|
||
|
var args ffmpeg.Args
|
||
|
|
||
|
args = args.Overwrite().
|
||
|
ImageFormat(options.InputFormat).
|
||
|
Input(input).
|
||
|
VideoFilter(videoFilter).
|
||
|
VideoCodec(ffmpeg.VideoCodecMJpeg)
|
||
|
|
||
|
if options.Quality > 0 {
|
||
|
args = args.FixedQualityScaleVideo(options.Quality)
|
||
|
}
|
||
|
|
||
|
args = args.ImageFormat(ffmpeg.ImageFormatImage2Pipe).
|
||
|
Output(options.OutputPath)
|
||
|
|
||
|
return args
|
||
|
}
|