Release/1.2.5 (#761)
Build Binary For Release / build-goreleaser (push) Has been cancelled
Build Docker Image For Release / build (push) Has been cancelled

Signed-off-by: Adam Vollrath <adam.d.vollrath@gmail.com>
Co-authored-by: shuai <lishuailing@sifou.com>
Co-authored-by: kelvinkuo <kelvinkuo224@gmail.com>
Co-authored-by: hgaol <dhangao@hotmail.com>
Co-authored-by: sy-records <52o@qq52o.cn>
Co-authored-by: Adam Vollrath <adam.d.vollrath@gmail.com>
Co-authored-by: kumfo <kumfo@sifou.com>
Co-authored-by: Yang Wong <yang wang>
Co-authored-by: hbsciw <hbsciw@gmail.com>
This commit is contained in:
LinkinStars
2024-01-29 19:14:13 +08:00
committed by GitHub
parent abecc1c9b6
commit 968f23db7f
+32
View File
@@ -29,6 +29,10 @@ import (
"strings"
)
const (
maxImageSize = 8192 * 8192
)
// IsSupportedImageFile currently answers support image type is
// `image/jpeg, image/jpg, image/png, image/gif, image/webp`
func IsSupportedImageFile(file io.Reader, ext string) bool {
@@ -36,14 +40,42 @@ func IsSupportedImageFile(file io.Reader, ext string) bool {
var err error
switch ext {
case "jpg", "jpeg", "png", "gif": // only allow for `image/jpeg,image/jpg,image/png, image/gif`
if !checkImageSize(file) {
return false
}
_, _, err = image.Decode(file)
case "ico":
// TODO: There is currently no good Golang library to parse whether the image is in ico format.
return true
case "webp":
if !checkWebpSize(file) {
return false
}
_, err = webp.Decode(file)
default:
return false
}
return err == nil
}
func checkImageSize(file io.Reader) bool {
config, _, err := image.DecodeConfig(file)
if err != nil {
return false
}
if (config.Width * config.Height) > maxImageSize {
return false
}
return true
}
func checkWebpSize(file io.Reader) bool {
config, err := webp.DecodeConfig(file)
if err != nil {
return false
}
if (config.Width * config.Height) > maxImageSize {
return false
}
return true
}