thumbnailer: option to set custom mime type for file decoding
This commit is contained in:
parent
060cefe642
commit
3905686363
@ -92,18 +92,18 @@ func FiletypeSupported(ext string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *Thumbnailer) RenderFile_NoCache(absPath string) ([]byte, error) {
|
func (this *Thumbnailer) RenderFile_NoCache(absPath string) ([]byte, error) {
|
||||||
|
return this.RenderFile_NoCache_MimeType(absPath, mime.TypeByExtension(filepath.Ext(absPath)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Thumbnailer) RenderFile_NoCache_MimeType(absPath, mimeType string) ([]byte, error) {
|
||||||
|
|
||||||
fh, err := os.OpenFile(absPath, os.O_RDONLY, 0400)
|
fh, err := os.OpenFile(absPath, os.O_RDONLY, 0400)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
defer fh.Close()
|
defer fh.Close()
|
||||||
|
|
||||||
extension := strings.ToLower(filepath.Ext(absPath))
|
if mimeType == `image/jpeg` {
|
||||||
|
|
||||||
switch extension {
|
|
||||||
case ".jpg", ".jpeg":
|
|
||||||
src, err := jpeg.Decode(fh)
|
src, err := jpeg.Decode(fh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -111,7 +111,7 @@ func (this *Thumbnailer) RenderFile_NoCache(absPath string) ([]byte, error) {
|
|||||||
|
|
||||||
return this.RenderScaledImage(src)
|
return this.RenderScaledImage(src)
|
||||||
|
|
||||||
case ".png":
|
} else if mimeType == `image/png` {
|
||||||
src, err := png.Decode(fh)
|
src, err := png.Decode(fh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -119,7 +119,7 @@ func (this *Thumbnailer) RenderFile_NoCache(absPath string) ([]byte, error) {
|
|||||||
|
|
||||||
return this.RenderScaledImage(src)
|
return this.RenderScaledImage(src)
|
||||||
|
|
||||||
case ".gif":
|
} else if mimeType == `image/gif` {
|
||||||
src, err := gif.Decode(fh)
|
src, err := gif.Decode(fh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -127,10 +127,10 @@ func (this *Thumbnailer) RenderFile_NoCache(absPath string) ([]byte, error) {
|
|||||||
|
|
||||||
return this.RenderScaledImage(src)
|
return this.RenderScaledImage(src)
|
||||||
|
|
||||||
case ".avi", ".mkv", ".mp4", ".ogm", ".wmv", ".flv", ".rm", ".rmvb":
|
} else if strings.HasPrefix(mimeType, `video/`) {
|
||||||
return this.RenderScaledFfmpeg(absPath)
|
return this.RenderScaledFfmpeg(absPath)
|
||||||
|
|
||||||
default:
|
} else {
|
||||||
return nil, ErrUnsupportedFiletype
|
return nil, ErrUnsupportedFiletype
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user