refactor(type): simplify image type matching

master
Tomas Aparicio 10 years ago
parent d06464fca2
commit 9342d6482a

@ -68,7 +68,7 @@ func Metadata(buf []byte) (ImageMetadata, error) {
Alpha: vipsHasAlpha(image), Alpha: vipsHasAlpha(image),
Profile: vipsHasProfile(image), Profile: vipsHasProfile(image),
Space: vipsSpace(image), Space: vipsSpace(image),
Type: getImageTypeName(imageType), Type: ImageTypeName(imageType),
} }
return metadata, nil return metadata, nil

@ -11,6 +11,15 @@ const (
MAGICK MAGICK
) )
// Pairs of image type and its name
var ImageTypes = map[ImageType]string{
JPEG: "jpeg",
PNG: "png",
WEBP: "webp",
TIFF: "tiff",
MAGICK: "magick",
}
// Determines the image type format (jpeg, png, webp or tiff) // Determines the image type format (jpeg, png, webp or tiff)
func DetermineImageType(buf []byte) ImageType { func DetermineImageType(buf []byte) ImageType {
return vipsImageType(buf) return vipsImageType(buf)
@ -18,43 +27,28 @@ func DetermineImageType(buf []byte) ImageType {
// Determines the image type format by name (jpeg, png, webp or tiff) // Determines the image type format by name (jpeg, png, webp or tiff)
func DetermineImageTypeName(buf []byte) string { func DetermineImageTypeName(buf []byte) string {
return getImageTypeName(vipsImageType(buf)) return ImageTypeName(vipsImageType(buf))
} }
// Check if a given image type is supported // Check if a given image type is supported
func IsTypeSupported(t ImageType) bool { func IsTypeSupported(t ImageType) bool {
return t == JPEG || t == PNG || t == WEBP || t == MAGICK return ImageTypes[t] != ""
} }
// Check if a given image type name is supported // Check if a given image type name is supported
func IsTypeNameSupported(t string) bool { func IsTypeNameSupported(t string) bool {
return t == "jpeg" || for _, name := range ImageTypes {
t == "jpg" || if name == t {
t == "png" || return true
t == "webp" || }
t == "magick" }
return false
} }
func getImageTypeName(code ImageType) string { func ImageTypeName(t ImageType) string {
imageType := "unknown" imageType := ImageTypes[t]
if imageType == "" {
switch { return "unknown"
case code == JPEG:
imageType = "jpeg"
break
case code == WEBP:
imageType = "webp"
break
case code == PNG:
imageType = "png"
break
case code == TIFF:
imageType = "tiff"
break
case code == MAGICK:
imageType = "magick"
break
} }
return imageType return imageType
} }

@ -68,7 +68,7 @@ func TestIsTypeNameSupported(t *testing.T) {
name string name string
expected bool expected bool
}{ }{
{"jpg", true}, {"jpeg", true},
{"png", true}, {"png", true},
{"webp", true}, {"webp", true},
{"gif", false}, {"gif", false},

Loading…
Cancel
Save