/
githubmirror
/
photoprism
Обзор
Документация
Войти
/
githubmirror
/
photoprism
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
internal/thumb/quality.go
99 строк
2 KB
Michael Mayer
Clean-up: Drop imaging and pigo library integrations #5353 #5508 #668
01 апр 2026, 14:47
01 апр 2026, 14:47
812facc
Код
Авторство
О чём код?
package thumb import ( "strconv" "strings" "github.com/photoprism/photoprism/pkg/txt" ) // Standard JPEG image quality levels, // see https://docs.photoprism.app/user-guide/settings/advanced/#jpeg-quality const ( QualityMax Quality = 91 QualityHigh Quality = 87 QualityMedium Quality = 83 QualityLow Quality = 79 QualityMin Quality = 70 ) // Quality represents a JPEG image quality. type Quality int // String returns the quality as string. func (q Quality) String() string { return strconv.Itoa(int(q)) } // Int returns the quality as int. func (q Quality) Int() int { return int(q) } // QualityLevels maps human-readable settings to a numeric Quality. var QualityLevels = map[string]Quality{ "max": QualityMax, "ultra": QualityMax, "best": QualityMax, "6": QualityMax, "5": QualityMax, "high": QualityHigh, "good": QualityHigh, "4": QualityHigh, "medium": QualityMedium, "med": QualityMedium, "default": QualityMedium, "standard": QualityMedium, "auto": QualityMedium, "": QualityMedium, "3": QualityMedium, "low": QualityLow, "small": QualityLow, "2": QualityLow, "min": QualityMin, "1": QualityMin, "0": QualityMin, } // JpegQuality returns the JPEG image quality depending on the image size. func JpegQuality(width, height int) Quality { // Use default quality for images larger than 150 pixels. if width > 150 || height > 150 { return JpegQualityDefault } // Use lower quality for very small thumbnails. return JpegQualitySmall() } // JpegQualitySmall returns the quality for images that should be more heavily compressed. func JpegQualitySmall() Quality { if q := JpegQualityDefault - 5; q < QualityMin || q > QualityMax { return JpegQualityDefault } else { return q } } // ParseQuality returns the matching quality based on a config value string. func ParseQuality(s string) Quality { // Default if empty. if s == "" { return QualityMedium } // Try to parse as positive integer. if i := txt.Int(s); i >= 25 && i <= 100 { return Quality(i) } // Normalize value. s = strings.ToLower(strings.TrimSpace(s)) // Human-readable quality levels. if l, ok := QualityLevels[s]; ok && l > 0 { return l } return QualityMedium }