diff --git a/web/src/components/image-parameter-fields.tsx b/web/src/components/image-parameter-fields.tsx index f0349d5c5..4683729fa 100644 --- a/web/src/components/image-parameter-fields.tsx +++ b/web/src/components/image-parameter-fields.tsx @@ -2,7 +2,7 @@ import { Input, InputNumber, Switch } from "antd"; import { useEffect, useRef, useState } from "react"; import { ImageSizePresetsEditor } from "./image-size-presets-editor"; import { ImageSizePicker } from "./image-size-picker"; -import { imageSingleSizeTier, imageSizeConfigWithPresets, imageSizePresets } from "@/lib/image-size-presets"; +import { IMAGE_RESOLUTIONS, imageSingleSizeTier, imageSizeConfigWithPresets, imageSizePresets } from "@/lib/image-size-presets"; import { Select } from "@/components/ui/base/select"; import { imageHostControls, imageParameterAccepts, imageParameterRequest, parseImageParameters, projectImageParameters, updateImageParameterSize, type ImageParameter, type ImageParameterValue } from "@/lib/image-parameters"; import type { ImageCapabilityConfig } from "@/lib/model-capabilities"; @@ -189,6 +189,18 @@ export function ImageParameterSchemaEditor({ definitions, parameters, disabled,
选择此模型支持的参数和范围。生成界面同步显示启用项,标记“可计价”的参数可用于规格价格。
{parameters.map((field) => { const definition = definitions.find((p) => p.name === field.name) || field; + const isResolution = field.name === "imageResolution" && field.type === "string"; + const resolutionChoices = isResolution ? (definition.values?.length ? definition.values : IMAGE_RESOLUTIONS.filter((tier) => imageParameterAccepts(definition, tier))) : []; + const quickResolutionChoices = isResolution && (!definition.values?.length || definition.values.some((value) => IMAGE_RESOLUTIONS.includes(String(value).toLowerCase()))) ? resolutionChoices : []; + const updateValues = (items: string[]) => { + const values = [...new Set(items.map((item) => { + const declared = definition.values?.find((v) => String(v) === item); + if (declared !== undefined) return declared; + return isResolution && !definition.values?.length && /^\d+(?:\.\d+)?k$/i.test(item.trim()) ? item.trim().toLowerCase() : item; + }))]; + const next = { ...field, values }; + update(field.name, { values, default: isResolution && !values.length ? undefined : imageParameterAccepts(next, field.default) ? field.default : values[0] }); + }; return (点选模型支持的档位,再次点击可移除。{!definition.values?.length ? "其他档位可在上方输入后按回车添加。" : ""}
+请先在上方分辨率中选择支持的档位,再配置各档位的比例和尺寸。
+ ) : grouped || pixelSize ? (