mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
75 lines
3.1 KiB
Markdown
75 lines
3.1 KiB
Markdown
---
|
||||
|
|
description: "通过格式转换、质量控制、调整尺寸和剥离元数据来为网页交付优化图片。"
|
|||
|
|
i18n_source_hash: c327bbbce768
|
|||
|
|
i18n_provenance: human
|
|||
|
|
i18n_output_hash: ae856b5bebbe
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 网页优化 {#optimize-for-web}
|
|||
|
|
|
|||
|
|
一步到位地为网页交付优化图片。整合了格式转换、质量调整、可选的尺寸调整、渐进式编码以及元数据剥离。
|
|||
|
|
|
|||
|
|
## API 端点 {#api-endpoint}
|
|||
|
|
|
|||
|
|
`POST /api/v1/tools/image/optimize-for-web`
|
|||
|
|
|
|||
|
|
接受包含一个图片文件和一个 JSON `settings` 字段的 multipart 表单数据。
|
|||
|
|
|
|||
|
|
另外还提供实时预览端点 `POST /api/v1/tools/image/optimize-for-web/preview`,它直接以二进制形式返回处理后的图片(不创建工作区),用于实时调整参数。
|
|||
|
|
|
|||
|
|
## 参数 {#parameters}
|
|||
|
|
|
|||
|
|
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|
|||
|
|
|-----------|------|----------|---------|-------------|
|
|||
|
|
| format | string | 否 | `"webp"` | 输出格式:`webp`、`jpeg`、`avif`、`png`、`jxl` |
|
|||
|
|
| quality | number | 否 | `80` | 输出质量(1-100) |
|
|||
|
|
| maxWidth | number | 否 | - | 最大宽度(像素)。图片若更宽则会被缩小。 |
|
|||
|
|
| maxHeight | number | 否 | - | 最大高度(像素)。图片若更高则会被缩小。 |
|
|||
|
|
| progressive | boolean | 否 | `true` | 启用渐进式/隔行扫描编码 |
|
|||
|
|
| stripMetadata | boolean | 否 | `true` | 移除 EXIF、GPS、ICC 和 XMP 元数据 |
|
|||
|
|
|
|||
|
|
## 请求示例 {#example-request}
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:1349/api/v1/tools/image/optimize-for-web \
|
|||
|
|
-H "Authorization: Bearer si_your-api-key" \
|
|||
|
|
-F "file=@photo.jpg" \
|
|||
|
|
-F 'settings={"format": "webp", "quality": 75, "maxWidth": 1920}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
以激进压缩优化为 AVIF:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:1349/api/v1/tools/image/optimize-for-web \
|
|||
|
|
-H "Authorization: Bearer si_your-api-key" \
|
|||
|
|
-F "file=@photo.jpg" \
|
|||
|
|
-F 'settings={"format": "avif", "quality": 50, "maxWidth": 1200, "maxHeight": 800}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 响应示例 {#example-response}
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|||
|
|
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.webp",
|
|||
|
|
"originalSize": 4500000,
|
|||
|
|
"processedSize": 320000
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 预览端点响应 {#preview-endpoint-response}
|
|||
|
|
|
|||
|
|
预览端点(`/api/v1/tools/image/optimize-for-web/preview`)直接返回二进制图片,并附带信息性响应头:
|
|||
|
|
|
|||
|
|
- `X-Original-Size` - 原始文件大小(字节)
|
|||
|
|
- `X-Processed-Size` - 处理后文件大小(字节)
|
|||
|
|
- `X-Output-Filename` - 经过 URL 编码的输出文件名
|
|||
|
|
|
|||
|
|
## 说明 {#notes}
|
|||
|
|
|
|||
|
|
- 该工具被设计为面向网页资源的一站式优化流水线。它在一次处理中完成格式转换、质量调整、最大尺寸限制和元数据移除。
|
|||
|
|
- 输出文件名的扩展名会更新以匹配所选格式。
|
|||
|
|
- JXL(JPEG XL)编码使用专用的 CLI 编码器。图片会先处理为 PNG,再编码为 JXL。
|
|||
|
|
- 渐进式编码通过让浏览器在完整图片加载之前先渲染低质量预览,改善 JPEG 和 PNG 的感知加载时间。
|
|||
|
|
- 预览端点更为轻量(不创建工作区/任务),旨在供前端的实时参数调整界面使用。
|