diff --git a/services/thumbnails/pkg/thumbnail/encoding.go b/services/thumbnails/pkg/thumbnail/encoding.go index d6d0d15a5d..656e63c298 100644 --- a/services/thumbnails/pkg/thumbnail/encoding.go +++ b/services/thumbnails/pkg/thumbnail/encoding.go @@ -15,6 +15,7 @@ const ( typeGif = "gif" typeGgs = "ggs" typeGgp = "ggp" + typeWebp = "webp" ) // Encoder encodes the thumbnail to a specific format. @@ -55,7 +56,7 @@ func EncoderForType(fileType string) (Encoder, error) { switch strings.ToLower(fileType) { case typePng, typeGgs, typeGgp: return PngEncoder{}, nil - case typeJpg, typeJpeg: + case typeJpg, typeJpeg, typeWebp: return JpegEncoder{}, nil case typeGif: return GifEncoder{}, nil @@ -68,7 +69,7 @@ func EncoderForType(fileType string) (Encoder, error) { func GetExtForMime(fileType string) string { ext := strings.TrimPrefix(strings.TrimSpace(strings.ToLower(fileType)), "image/") switch ext { - case typeJpg, typeJpeg, typePng, typeGif: + case typeJpg, typeJpeg, typePng, typeGif, typeWebp: return ext case "application/vnd.geogebra.slides": return typeGgs diff --git a/services/thumbnails/pkg/thumbnail/generator.go b/services/thumbnails/pkg/thumbnail/generator.go index 1cd6b48253..4cc2245d30 100644 --- a/services/thumbnails/pkg/thumbnail/generator.go +++ b/services/thumbnails/pkg/thumbnail/generator.go @@ -89,7 +89,7 @@ func (g GifGenerator) imageToPaletted(img image.Image, p color.Palette) *image.P // or nil if the type is not supported. func GeneratorFor(fileType, processorID string) (Generator, error) { switch strings.ToLower(fileType) { - case typePng, typeJpg, typeJpeg, typeGgs, typeGgp: + case typePng, typeJpg, typeJpeg, typeGgs, typeGgp, typeWebp: return NewSimpleGenerator(fileType, processorID) case typeGif: return NewGifGenerator(fileType, processorID) diff --git a/services/thumbnails/pkg/thumbnail/mimetypes.go b/services/thumbnails/pkg/thumbnail/mimetypes.go new file mode 100644 index 0000000000..02a91e22f5 --- /dev/null +++ b/services/thumbnails/pkg/thumbnail/mimetypes.go @@ -0,0 +1,22 @@ +//go:build !enable_vips + +package thumbnail + +var ( + // SupportedMimeTypes contains an all mimetypes which are supported by the thumbnailer. + SupportedMimeTypes = map[string]struct{}{ + "image/png": {}, + "image/jpg": {}, + "image/jpeg": {}, + "image/gif": {}, + "image/bmp": {}, + "image/x-ms-bmp": {}, + "image/tiff": {}, + "text/plain": {}, + "audio/flac": {}, + "audio/mpeg": {}, + "audio/ogg": {}, + "application/vnd.geogebra.slides": {}, + "application/vnd.geogebra.pinboard": {}, + } +) diff --git a/services/thumbnails/pkg/thumbnail/mimetypes_vips.go b/services/thumbnails/pkg/thumbnail/mimetypes_vips.go new file mode 100644 index 0000000000..b94fafafaf --- /dev/null +++ b/services/thumbnails/pkg/thumbnail/mimetypes_vips.go @@ -0,0 +1,23 @@ +//go:build enable_vips + +package thumbnail + +var ( + // SupportedMimeTypes contains an all mimetypes which are supported by the thumbnailer. + SupportedMimeTypes = map[string]struct{}{ + "image/png": {}, + "image/jpg": {}, + "image/jpeg": {}, + "image/gif": {}, + "image/bmp": {}, + "image/x-ms-bmp": {}, + "image/tiff": {}, + "text/plain": {}, + "audio/flac": {}, + "audio/mpeg": {}, + "audio/ogg": {}, + "application/vnd.geogebra.slides": {}, + "application/vnd.geogebra.pinboard": {}, + "image/webp": {}, + } +) diff --git a/services/thumbnails/pkg/thumbnail/thumbnail.go b/services/thumbnails/pkg/thumbnail/thumbnail.go index bf465d67b0..f20824ae66 100644 --- a/services/thumbnails/pkg/thumbnail/thumbnail.go +++ b/services/thumbnails/pkg/thumbnail/thumbnail.go @@ -10,25 +10,6 @@ import ( "github.com/opencloud-eu/opencloud/services/thumbnails/pkg/thumbnail/storage" ) -var ( - // SupportedMimeTypes contains an all mimetypes which are supported by the thumbnailer. - SupportedMimeTypes = map[string]struct{}{ - "image/png": {}, - "image/jpg": {}, - "image/jpeg": {}, - "image/gif": {}, - "image/bmp": {}, - "image/x-ms-bmp": {}, - "image/tiff": {}, - "text/plain": {}, - "audio/flac": {}, - "audio/mpeg": {}, - "audio/ogg": {}, - "application/vnd.geogebra.slides": {}, - "application/vnd.geogebra.pinboard": {}, - } -) - // Request bundles information needed to generate a thumbnail for a file type Request struct { Resolution image.Rectangle