This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

GIF 工具

对动画 GIF 进行调整大小、优化、变速、反转、提取帧和旋转。在单个工具中提供多种操作模式。

API 端点

POST /api/v1/tools/image/gif-tools

参数

通用参数

参数类型是否必填默认值说明
modestring"resize"操作模式:resizeoptimizespeedreverseextractrotate
loopnumber0输出 GIF 的循环次数(0 = 无限,1-100 = 有限次循环)

调整大小模式参数

参数类型是否必填默认值说明
widthinteger-目标宽度(像素,1 到 16384)
heightinteger-目标高度(像素,1 到 16384)
percentagenumber-按百分比缩放(1 到 500)。设置后会覆盖 width/height。

优化模式参数

参数类型是否必填默认值说明
colorsnumber256调色板中的最大颜色数(2 到 256)
dithernumber1.0抖动强度(0 到 1,0 表示禁用抖动)
effortnumber7优化投入级别(1 到 10,越高越慢但文件越小)

变速模式参数

参数类型是否必填默认值说明
speedFactornumber1.0速度倍数(0.1 到 10)。值 > 1 加速,< 1 减速。

提取模式参数

参数类型是否必填默认值说明
extractModestring"single"提取模式:singlerangeall
frameNumbernumber0single 模式下要提取的帧索引(从 0 开始)
frameStartnumber0range 模式下的起始帧索引(从 0 开始)
frameEndnumber-range 模式下的结束帧索引(从 0 开始,含此帧)
extractFormatstring"png"提取帧的格式:pngwebp

旋转模式参数

参数类型是否必填默认值说明
anglenumber-旋转角度:90180270
flipHbooleanfalse水平翻转
flipVbooleanfalse垂直翻转

请求示例

调整大小

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"resize","percentage":50}'

优化

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"optimize","colors":128,"effort":9}'

加速

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"speed","speedFactor":2.0}'

提取单帧

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}'

响应示例

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.gif",
  "originalSize": 2345678,
  "processedSize": 1234567
}

Info 子路由

POST /api/v1/tools/image/gif-tools/info

返回动画 GIF 的元数据而不对其进行处理。

Info 请求

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools/info \
  -F "[email protected]"

Info 响应

json
{
  "width": 480,
  "height": 320,
  "pages": 24,
  "delay": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
  "loop": 0,
  "fileSize": 2345678,
  "duration": 2400
}

说明

  • 主处理端点使用标准的 createToolRoute 工厂。
  • info 端点只需上传文件(无需设置)。
  • resize 模式下,如果提供了 percentage,它会优先于 width/height。调整大小使用 fit: inside 以保持宽高比。
  • speed 模式下,帧延迟会除以速度因子。每帧的最小延迟为 20ms(GIF 规范限制)。
  • reverse 模式下,还可使用 speedFactor 参数在反转的同时调整速度。
  • extract 模式且使用 rangeall 时,输出是包含各个帧的 ZIP 文件。
  • rotate 模式下,会单独处理每一帧并重新组装成动画。
  • loop 参数控制输出 GIF 的循环次数。使用 0 表示无限循环。
  • info 响应中的 duration 字段是以毫秒为单位的动画总时长。