mirror of
https://github.com/imgproxy/imgproxy.git
synced 2024-11-24 08:12:38 +02:00
Move WebP enforcement/preference to processing
This commit is contained in:
parent
c2ce5c5850
commit
7e979a9024
@ -497,11 +497,15 @@ func processImage(ctx context.Context) ([]byte, context.CancelFunc, error) {
|
||||
imgtype := getImageType(ctx)
|
||||
|
||||
if po.Format == imageTypeUnknown {
|
||||
if vipsTypeSupportSave[imgtype] {
|
||||
if po.PreferWebP && vipsTypeSupportSave[imageTypeWEBP] {
|
||||
po.Format = imageTypeWEBP
|
||||
} else if vipsTypeSupportSave[imgtype] {
|
||||
po.Format = imgtype
|
||||
} else {
|
||||
po.Format = imageTypeJPEG
|
||||
}
|
||||
} else if po.EnforceWebP && vipsTypeSupportSave[imageTypeWEBP] {
|
||||
po.Format = imageTypeWEBP
|
||||
}
|
||||
|
||||
if !vipsSupportSmartcrop {
|
||||
|
@ -118,6 +118,9 @@ type processingOptions struct {
|
||||
|
||||
Watermark watermarkOptions
|
||||
|
||||
PreferWebP bool
|
||||
EnforceWebP bool
|
||||
|
||||
UsedPresets []string
|
||||
}
|
||||
|
||||
@ -605,11 +608,6 @@ func applyFormatOption(po *processingOptions, args []string) error {
|
||||
return fmt.Errorf("Invalid format arguments: %v", args)
|
||||
}
|
||||
|
||||
if conf.EnforceWebp && po.Format == imageTypeWEBP {
|
||||
// Webp is enforced and already set as format
|
||||
return nil
|
||||
}
|
||||
|
||||
if f, ok := imageTypes[args[0]]; ok {
|
||||
po.Format = f
|
||||
} else {
|
||||
@ -769,9 +767,11 @@ func defaultProcessingOptions(headers *processingHeaders) (*processingOptions, e
|
||||
UsedPresets: make([]string, 0, len(conf.Presets)),
|
||||
}
|
||||
|
||||
if (conf.EnableWebpDetection || conf.EnforceWebp) && strings.Contains(headers.Accept, "image/webp") {
|
||||
po.Format = imageTypeWEBP
|
||||
if strings.Contains(headers.Accept, "image/webp") {
|
||||
po.PreferWebP = conf.EnableWebpDetection || conf.EnforceWebp
|
||||
po.EnforceWebP = conf.EnforceWebp
|
||||
}
|
||||
|
||||
if conf.EnableClientHints && len(headers.ViewportWidth) > 0 {
|
||||
if vw, err := strconv.Atoi(headers.ViewportWidth); err == nil {
|
||||
po.Width = vw
|
||||
|
Loading…
Reference in New Issue
Block a user