Handle Gemini inline data in asset and size processing

This commit is contained in:
2026-06-15 00:14:40 +08:00
parent b860ef37e8
commit 10ec25d87b
10 changed files with 380 additions and 18 deletions
@@ -207,7 +207,8 @@ func (imageSizeProcessor) Process(params map[string]any, modelType string, conte
width, height = constrainImageDimensions(width, height, capability)
params["width"] = width
params["height"] = height
if stringFromAny(params["aspect_ratio"]) == "" {
_, _, sizeHasPixelDimensions := parsePixelSizeString(stringFromAny(params["size"]))
if stringFromAny(params["aspect_ratio"]) == "" || sizeHasPixelDimensions {
aspectRatio := aspectRatioFromDimensions(width, height)
allowed := aspectRatioAllowed(capability["aspect_ratio_allowed"], firstNonEmptyString(stringFromAny(params["resolution"]), context.resolution))
if processed, ok := validateAndAdjustAspectRatio(aspectRatio, capability, allowed); ok && processed != "" {
@@ -251,14 +252,14 @@ func (imageSizeProcessor) Process(params map[string]any, modelType string, conte
}
func imageDimensionsFromParams(params map[string]any) (int, int, bool) {
if width, height, ok := parsePixelSizeString(stringFromAny(params["size"])); ok {
return width, height, true
}
width := positiveIntegerFromAny(params["width"])
height := positiveIntegerFromAny(params["height"])
if width > 0 && height > 0 {
return width, height, true
}
if width, height, ok := parsePixelSizeString(stringFromAny(params["size"])); ok {
return width, height, true
}
return parsePixelSizeString(stringFromAny(params["resolution"]))
}