mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
148 lines
6.4 KiB
Markdown
148 lines
6.4 KiB
Markdown
---
|
|
description: "アニメーション GIF のリサイズ、最適化、速度変更、逆再生、回転、フレーム抽出を 1 つのツールで行います。"
|
|
i18n_source_hash: 5e525e80db92
|
|
i18n_provenance: human
|
|
i18n_output_hash: 2f1d49287380
|
|
---
|
|
|
|
# GIF ツール {#gif-tools}
|
|
|
|
アニメーション GIF のリサイズ、最適化、速度変更、逆再生、フレーム抽出、回転を行います。1 つのツールで複数の操作モードを提供します。
|
|
|
|
## API エンドポイント {#api-endpoint}
|
|
|
|
`POST /api/v1/tools/image/gif-tools`
|
|
|
|
## パラメーター {#parameters}
|
|
|
|
### 共通パラメーター {#common-parameters}
|
|
|
|
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
|
|-----------|------|----------|---------|-------------|
|
|
| mode | string | いいえ | `"resize"` | 操作モード: `resize`、`optimize`、`speed`、`reverse`、`extract`、`rotate` |
|
|
| loop | number | いいえ | 0 | 出力 GIF のループ回数(0 = 無限、1〜100 = 有限ループ) |
|
|
|
|
### リサイズモードのパラメーター {#resize-mode-parameters}
|
|
|
|
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
|
|-----------|------|----------|---------|-------------|
|
|
| width | integer | いいえ | - | 目標の幅(ピクセル、1 から 16384) |
|
|
| height | integer | いいえ | - | 目標の高さ(ピクセル、1 から 16384) |
|
|
| percentage | number | いいえ | - | パーセンテージでスケール(1 から 500)。設定すると width/height を上書きします。 |
|
|
|
|
### 最適化モードのパラメーター {#optimize-mode-parameters}
|
|
|
|
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
|
|-----------|------|----------|---------|-------------|
|
|
| colors | number | いいえ | 256 | パレット内の最大色数(2 から 256) |
|
|
| dither | number | いいえ | 1.0 | ディザリングの強度(0 から 1、0 でディザリングを無効化) |
|
|
| effort | number | いいえ | 7 | 最適化の労力レベル(1 から 10、高いほど遅いが小さくなる) |
|
|
|
|
### 速度モードのパラメーター {#speed-mode-parameters}
|
|
|
|
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
|
|-----------|------|----------|---------|-------------|
|
|
| speedFactor | number | いいえ | 1.0 | 速度倍率(0.1 から 10)。1 より大きい値で高速化、1 未満で低速化します。 |
|
|
|
|
### 抽出モードのパラメーター {#extract-mode-parameters}
|
|
|
|
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
|
|-----------|------|----------|---------|-------------|
|
|
| extractMode | string | いいえ | `"single"` | 抽出モード: `single`、`range`、`all` |
|
|
| frameNumber | number | いいえ | 0 | `single` モードで抽出するフレームのインデックス(0 始まり) |
|
|
| frameStart | number | いいえ | 0 | `range` モードの開始フレームインデックス(0 始まり) |
|
|
| frameEnd | number | いいえ | - | `range` モードの終了フレームインデックス(0 始まり、含む) |
|
|
| extractFormat | string | いいえ | `"png"` | 抽出フレームの形式: `png`、`webp` |
|
|
|
|
### 回転モードのパラメーター {#rotate-mode-parameters}
|
|
|
|
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
|
|-----------|------|----------|---------|-------------|
|
|
| angle | number | いいえ | - | 回転角度: `90`、`180`、または `270` 度 |
|
|
| flipH | boolean | いいえ | `false` | 水平方向に反転 |
|
|
| flipV | boolean | いいえ | `false` | 垂直方向に反転 |
|
|
|
|
## リクエスト例 {#example-requests}
|
|
|
|
### リサイズ {#resize}
|
|
|
|
```bash
|
|
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
|
|
-F "file=@animation.gif" \
|
|
-F 'settings={"mode":"resize","percentage":50}'
|
|
```
|
|
|
|
### 最適化 {#optimize}
|
|
|
|
```bash
|
|
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
|
|
-F "file=@large.gif" \
|
|
-F 'settings={"mode":"optimize","colors":128,"effort":9}'
|
|
```
|
|
|
|
### 高速化 {#speed-up}
|
|
|
|
```bash
|
|
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
|
|
-F "file=@animation.gif" \
|
|
-F 'settings={"mode":"speed","speedFactor":2.0}'
|
|
```
|
|
|
|
### 単一フレームの抽出 {#extract-single-frame}
|
|
|
|
```bash
|
|
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
|
|
-F "file=@animation.gif" \
|
|
-F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}'
|
|
```
|
|
|
|
## レスポンス例 {#example-response}
|
|
|
|
```json
|
|
{
|
|
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.gif",
|
|
"originalSize": 2345678,
|
|
"processedSize": 1234567
|
|
}
|
|
```
|
|
|
|
## Info サブルート {#info-sub-route}
|
|
|
|
`POST /api/v1/tools/image/gif-tools/info`
|
|
|
|
アニメーション GIF を処理せずにそのメタデータを返します。
|
|
|
|
### Info リクエスト {#info-request}
|
|
|
|
```bash
|
|
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools/info \
|
|
-F "file=@animation.gif"
|
|
```
|
|
|
|
### Info レスポンス {#info-response}
|
|
|
|
```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
|
|
}
|
|
```
|
|
|
|
## 注記 {#notes}
|
|
|
|
- メイン処理エンドポイントには標準の `createToolRoute` ファクトリを使用します。
|
|
- info エンドポイントはファイルのアップロードのみを必要とします(設定は不要)。
|
|
- `resize` モードでは、`percentage` が指定されている場合、`width`/`height` より優先されます。リサイズはアスペクト比を維持するために `fit: inside` を使用します。
|
|
- `speed` モードでは、フレームの遅延が速度係数で除算されます。フレームあたりの最小遅延は 20ms です(GIF 仕様の制限)。
|
|
- `reverse` モードでは、逆再生しながら同時に速度を調整するために `speedFactor` パラメーターも使用できます。
|
|
- `range` または `all` を指定した `extract` モードでは、出力は個々のフレームを含む ZIP ファイルになります。
|
|
- `rotate` モードでは、各フレームが個別に処理され、アニメーションに再構成されます。
|
|
- `loop` パラメーターは、出力 GIF がループする回数を制御します。無限ループには 0 を使用します。
|
|
- info レスポンスの `duration` フィールドは、アニメーション全体の再生時間(ミリ秒)です。
|