变换
图像:压缩请求图片
在上游编码前,重新编码 user 图片和工具图片。
行为
此变换重新编码 user 消息中的内联图片和工具结果中的图片。它也处理函数工具参数 JSON 中的图片 data URL 和图片块。可用 max_edge_px 缩放这些图片。自定义工具的自由文本及其他 Base64 保持不变。
skip_if_smaller 开启时(默认),压缩没有减小体积的图片保留原始字节。
对于 JPEG、PNG 和 WebP 字节,此变换根据实际格式识别媒体类型。即使 skip_if_smaller 保留原始字节,它也会纠正不匹配的媒体类型。
如果图片带有 alpha 通道,且选定的输出格式为 jpg,此变换会保留原始字节、媒体类型和尺寸。即使所有像素均不透明,也适用此规则。此规则优先于 max_edge_px 和 skip_if_smaller,以保留透明信息和图像蒙版。请求不含蒙版时,支持 alpha 通道的格式仍按配置压缩。
如果编辑请求包含蒙版,此变换会跳过请求中的所有图片,包括工具图片。它会在查询缓存前保留图片与蒙版的字节、尺寸和对齐关系。
参考信息
| 属性 | 值 |
|---|---|
| 类型 ID | image_compress_input |
| 阶段 | request |
| 范围 | Provider, API 密钥 |
适用场景
- 客户端发送大照片或截图,上游请求触达大小限制。
- 你希望限制图像分辨率以控制成本。
配置
| 选项 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
output_format | string | 否 | "original" | original、jpg、jpegxl_lossless、jpegxl、webp_lossless、webp 或 png。 |
max_edge_px | integer | 否 | — | 最大宽度或高度(像素)。省略则保留原始尺寸。 |
jpeg_quality | integer | 否 | 80 | JPEG 输出的质量,1-100。 |
jpegxl_quality | integer | 否 | 90 | 有损 JPEG XL 输出的质量,1-99。 |
jpegxl_effort | integer | 否 | 7 | JPEG XL 编码力度,1-10。数值越高压缩越慢。 |
webp_quality | integer | 否 | 80 | 有损 WebP 输出的质量,1-100。 |
skip_if_smaller | boolean | 否 | true | 压缩没有减小体积时保留原图。 |
示例规则
{
"transform": "image_compress_input",
"enabled": true,
"phase": "request",
"models": [
"*"
],
"config": {
"output_format": "webp",
"max_edge_px": 1568,
"webp_quality": 80
}
}设置环境变量 MONOIZE_IMAGE_TRANSFORM_MAX_* 可以限制解码开销。参见配置。