2023-09-11 15:43:09 +00:00
|
|
|
/*
|
|
|
|
Copyright © 2023 Seednode <seednode@seedno.de>
|
|
|
|
*/
|
|
|
|
|
2023-09-11 16:25:39 +00:00
|
|
|
package formats
|
2023-09-11 15:43:09 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
_ "image/gif"
|
|
|
|
_ "image/jpeg"
|
|
|
|
_ "image/png"
|
|
|
|
|
|
|
|
"github.com/h2non/filetype"
|
|
|
|
_ "golang.org/x/image/bmp"
|
|
|
|
_ "golang.org/x/image/webp"
|
|
|
|
)
|
|
|
|
|
2023-09-11 16:25:39 +00:00
|
|
|
func RegisterImageFormats() *SupportedFormat {
|
|
|
|
return &SupportedFormat{
|
|
|
|
Title: func(queryParams, filePath, mime, fileName string, width, height int) string {
|
2023-09-11 15:43:09 +00:00
|
|
|
return fmt.Sprintf(`<title>%s (%dx%d)</title>`,
|
|
|
|
fileName,
|
|
|
|
width,
|
|
|
|
height)
|
|
|
|
},
|
2023-09-11 16:25:39 +00:00
|
|
|
Body: func(queryParams, filePath, mime, fileName string, width, height int) string {
|
2023-09-11 15:43:09 +00:00
|
|
|
return fmt.Sprintf(`<a href="/%s"><img src="%s" width="%d" height="%d" type="%s" alt="Roulette selected: %s"></a>`,
|
|
|
|
queryParams,
|
|
|
|
filePath,
|
|
|
|
width,
|
|
|
|
height,
|
|
|
|
mime,
|
|
|
|
fileName)
|
|
|
|
},
|
2023-09-11 16:25:39 +00:00
|
|
|
Extensions: []string{
|
2023-09-11 15:43:09 +00:00
|
|
|
`.bmp`,
|
|
|
|
`.gif`,
|
|
|
|
`.jpeg`,
|
|
|
|
`.jpg`,
|
|
|
|
`.png`,
|
|
|
|
`.webp`,
|
|
|
|
},
|
|
|
|
validator: func(head []byte) bool {
|
|
|
|
return filetype.IsImage(head)
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|