mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(docs-i18n): translate all documentation into 20 languages
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.
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
---
|
||||
description: "明るさ、コントラスト、彩度、色温度、色相、チャンネルを調整し、カラーエフェクトを適用します。"
|
||||
i18n_source_hash: 41b35fe5c2ba
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 6d1d3100b874
|
||||
---
|
||||
|
||||
# Adjust Colors {#adjust-colors}
|
||||
|
||||
明るさ、コントラスト、露出、彩度、色温度、ティント、色相回転、チャンネルごとのレベル、ワンクリックエフェクト (グレースケール、セピア、反転) を 1 つのエンドポイントにまとめた包括的なカラー調整ツールです。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/adjust-colors`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| brightness | number | No | `0` | 明るさの調整 (-100 ~ 100) |
|
||||
| contrast | number | No | `0` | コントラストの調整 (-100 ~ 100) |
|
||||
| exposure | number | No | `0` | 露出 / 中間調ガンマ (-100 ~ 100) |
|
||||
| saturation | number | No | `0` | 色の彩度 (-100 ~ 100) |
|
||||
| temperature | number | No | `0` | ホワイトバランス: 寒色/青から暖色/オレンジ (-100 ~ 100) |
|
||||
| tint | number | No | `0` | ティントのシフト: 緑からマゼンタ (-100 ~ 100) |
|
||||
| hue | number | No | `0` | 色相回転 (度) (-180 ~ 180) |
|
||||
| sharpness | number | No | `0` | シャープ化の強度 (0 ~ 100) |
|
||||
| red | number | No | `100` | 赤チャンネルのレベル (0 ~ 200、100 = 変更なし) |
|
||||
| green | number | No | `100` | 緑チャンネルのレベル (0 ~ 200、100 = 変更なし) |
|
||||
| blue | number | No | `100` | 青チャンネルのレベル (0 ~ 200、100 = 変更なし) |
|
||||
| effect | string | No | `"none"` | カラーエフェクト: `none`、`grayscale`、`sepia`、`invert` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/adjust-colors \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"brightness": 20, "contrast": 10, "saturation": -30, "effect": "none"}'
|
||||
```
|
||||
|
||||
暖かみのあるヴィンテージな見た目を適用する:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/adjust-colors \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"temperature": 40, "saturation": -15, "contrast": 10, "effect": "sepia"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2380000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- すべてのパラメータはニュートラルな値がデフォルトになっているため、必要な項目だけを調整できます。
|
||||
- 調整は次の順序で適用されます: 明るさ、コントラスト、露出、彩度/色相、色温度/ティント、シャープネス、チャンネル、エフェクト。
|
||||
- 色温度は、青-オレンジ軸および緑-マゼンタ軸で 3x3 の色再結合行列を使用します。
|
||||
- 露出は Sharp のガンマ関数にマッピングされます (正の値は中間調を明るくし、負の値は暗くします)。
|
||||
- このエンドポイントはレガシーパス `/api/v1/tools/image/brightness-contrast`、`/api/v1/tools/image/saturation`、`/api/v1/tools/image/color-channels`、`/api/v1/tools/image/color-effects` でも応答します。すべて同じスキーマを使用します。
|
||||
- 出力形式は入力形式と一致します。HEIC、RAW、PSD、SVG の入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
description: "AI アウトペインティングで画像キャンバスを拡張し、任意の方向に広げて新しい領域を元の画像に合わせて埋めます。"
|
||||
i18n_source_hash: 1b00db4ed40d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1d19a538f275
|
||||
---
|
||||
|
||||
# AI Canvas Expand {#ai-canvas-expand}
|
||||
|
||||
AI 対応のフィル (アウトペインティング) で画像のキャンバスを拡張します。任意の方向に画像を広げ、既存の画像に合わせた AI 生成コンテンツで新しい領域を埋めます。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/ai-canvas-expand`
|
||||
|
||||
**処理:** 非同期 (202 を返し、SSE でステータスを `/api/v1/jobs/{jobId}/progress` からポーリング)
|
||||
|
||||
**モデルバンドル:** `object-eraser-colorize` (1 ~ 2 GB)
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル (マルチパート) |
|
||||
| extendTop | integer | No | `0` | 上方向に拡張するピクセル数 |
|
||||
| extendRight | integer | No | `0` | 右方向に拡張するピクセル数 |
|
||||
| extendBottom | integer | No | `0` | 下方向に拡張するピクセル数 |
|
||||
| extendLeft | integer | No | `0` | 左方向に拡張するピクセル数 |
|
||||
| tier | string | No | `"balanced"` | 品質ティア: `fast`、`balanced`、`high` |
|
||||
| format | string | No | `"auto"` | 出力形式: `auto`、`png`、`jpg`、`jpeg`、`webp`、`tiff`、`gif`、`avif`、`heic`、`heif`、`jxl` |
|
||||
| quality | integer | No | `95` | 出力品質 (1 ~ 100) |
|
||||
|
||||
拡張方向のうち少なくとも 1 つは 0 より大きくする必要があります。
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/ai-canvas-expand \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"extendTop":200,"extendBottom":200,"extendLeft":100,"extendRight":100,"tier":"balanced"}'
|
||||
```
|
||||
|
||||
## Response {#response}
|
||||
|
||||
### Initial Response (202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### Progress (SSE at `/api/v1/jobs/{jobId}/progress`) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Expanding canvas...","percent":50}
|
||||
```
|
||||
|
||||
### Final Result (via SSE) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/photo_extended.png",
|
||||
"previewUrl": "/api/v1/download/{jobId}/preview.webp",
|
||||
"originalSize": 300000,
|
||||
"processedSize": 520000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- `object-eraser-colorize` モデルバンドルのインストールが必要です (1 ~ 2 GB)。
|
||||
- LaMa ベースのアウトペインティングを使用して、拡張された領域のコンテンツを生成します。
|
||||
- `tier` パラメータは速度と品質のトレードオフです。`fast` はアーティファクトが生じる可能性はあるものの素早く結果を生成し、`high` はより時間がかかりますが、より滑らかで一貫性のあるフィルを生成します。
|
||||
- 拡張値はピクセル単位です。最終的な画像サイズは、元の幅 + extendLeft + extendRight × 元の高さ + extendTop + extendBottom になります。
|
||||
- ブラウザでプレビューできない出力形式 (HEIC、JXL、TIFF) の場合、メイン出力とともに WebP プレビューが生成されます。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力形式を自動デコードでサポートします。
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: "AI を使用して画像の背景を単色またはグラデーションに置き換えます。"
|
||||
i18n_source_hash: 930fe8890e55
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a72b7f9033a8
|
||||
---
|
||||
|
||||
# Background Replace {#background-replace}
|
||||
|
||||
画像の背景を単色またはグラデーションに置き換えます。AI モデルが被写体を検出し、元の背景を除去して、選択した背景の上に被写体を合成します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/background-replace`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| backgroundType | string | No | `"color"` | 背景モード: `color` または `gradient` |
|
||||
| color | string | No | `"#ffffff"` | 背景の 16 進カラー (backgroundType が `color` の場合) |
|
||||
| gradientColor1 | string | No | - | グラデーションの 1 番目の 16 進カラー |
|
||||
| gradientColor2 | string | No | - | グラデーションの 2 番目の 16 進カラー |
|
||||
| gradientAngle | integer | No | `180` | グラデーションの角度 (度) (0 ~ 360) |
|
||||
| feather | integer | No | `0` | エッジのぼかし半径 (0 ~ 20) |
|
||||
| format | string | No | `"png"` | 出力形式: `png` または `webp` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/background-replace \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"backgroundType": "color", "color": "#2563eb", "feather": 2}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
進捗は `GET /api/v1/jobs/{jobId}/progress` の SSE で追跡できます。ジョブが完了すると、SSE ストリームがダウンロード URL 付きの `completed` イベントを発行します。
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- これは `202 Accepted` を返し、非同期で処理する AI 対応ツールです。SSE エンドポイントに接続して進捗の更新と最終結果を受け取ってください。
|
||||
- **background-removal** 機能バンドルのインストールが必要です。バンドルが利用できない場合は `501` を返します。
|
||||
- HEIC、RAW、PSD、SVG の入力は処理前に自動的にデコードされます。
|
||||
- 被写体周辺の透明度を保持するため、出力はデフォルトで PNG になります。
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
description: "Code 128、EAN-13、UPC-A、Code 39、ITF-14、Data Matrix 形式のバーコードを生成します。"
|
||||
i18n_source_hash: e84b1df40c7e
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8c99b0662912
|
||||
---
|
||||
|
||||
# Barcode Generator {#barcode-generator}
|
||||
|
||||
テキスト入力からバーコード画像を生成します。Code 128、EAN-13、UPC-A、Code 39、ITF-14、Data Matrix 形式をサポートします。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/barcode-generate`
|
||||
|
||||
`application/json` ボディを受け付けます (マルチパートではありません)。バーコードはアップロードされたファイルではなく、指定されたテキストから生成されます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Yes | - | バーコードにエンコードするテキスト (1 ~ 256 文字) |
|
||||
| type | string | No | `"code128"` | バーコード形式: `code128`、`ean13`、`upca`、`code39`、`itf14`、`datamatrix` |
|
||||
| scale | integer | No | `3` | 画像のスケール係数 (1 ~ 8) |
|
||||
| includeText | boolean | No | `true` | バーコードの下にテキストをレンダリングするかどうか |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/barcode-generate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"text": "5901234123457", "type": "ean13", "scale": 4}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/barcode.png",
|
||||
"originalSize": 0,
|
||||
"processedSize": 4520
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 大半のツールとは異なり、このエンドポイントはマルチパートフォームデータではなく JSON ボディを受け付けます。これは、バーコードがアップロードされたファイルではなくテキストから生成されるためです。
|
||||
- EAN-13 は正確に 12 桁または 13 桁の数字が必要です。UPC-A は正確に 11 桁または 12 桁の数字が必要です。チェックディジットが省略された場合は自動的に計算されます。
|
||||
- Code 128 は最も柔軟な形式で、完全な ASCII 文字セットをサポートします。
|
||||
- Data Matrix は、長い文字列をコンパクトな正方形にエンコードするのに適した 2D バーコードを生成します。
|
||||
@@ -0,0 +1,97 @@
|
||||
---
|
||||
description: "画像内の QR コード、バーコード、2D コードをスキャンし、注釈付きの出力を生成します。"
|
||||
i18n_source_hash: 97c9d395c257
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 58678814c98b
|
||||
---
|
||||
|
||||
# Barcode Reader {#barcode-reader}
|
||||
|
||||
アップロードされた画像であらゆる種類のバーコードと QR コードをスキャンします。検出された各コードについて、デコードされたテキスト、バーコードの種類、位置データを返します。また、検出されたコードの周囲に色付きのバウンディングボックスを描いた注釈付き画像も生成します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/barcode-read`
|
||||
|
||||
画像ファイルとオプションの JSON `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| tryHarder | boolean | No | `true` | 読み取りが難しいバーコード向けにアグレッシブなスキャンモードを有効にします (低速ですがより徹底的) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/barcode-read \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@receipt.jpg" \
|
||||
-F 'settings={"tryHarder": true}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"filename": "receipt.jpg",
|
||||
"barcodes": [
|
||||
{
|
||||
"type": "QRCode",
|
||||
"text": "https://example.com/product/123",
|
||||
"position": {
|
||||
"topLeft": { "x": 100, "y": 50 },
|
||||
"topRight": { "x": 250, "y": 50 },
|
||||
"bottomLeft": { "x": 100, "y": 200 },
|
||||
"bottomRight": { "x": 250, "y": 200 }
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "EAN-13",
|
||||
"text": "5901234123457",
|
||||
"position": {
|
||||
"topLeft": { "x": 50, "y": 400 },
|
||||
"topRight": { "x": 300, "y": 400 },
|
||||
"bottomLeft": { "x": 50, "y": 450 },
|
||||
"bottomRight": { "x": 300, "y": 450 }
|
||||
}
|
||||
}
|
||||
],
|
||||
"annotatedUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/annotated-receipt.png",
|
||||
"previewUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/annotated-receipt.png"
|
||||
}
|
||||
```
|
||||
|
||||
## Response Fields {#response-fields}
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| filename | string | 元のファイル名 |
|
||||
| barcodes | array | 検出されたバーコードオブジェクトの配列 |
|
||||
| annotatedUrl | string or null | 注釈付き画像のダウンロード URL (バーコードが見つからない場合は null) |
|
||||
| previewUrl | string or null | annotatedUrl と同じ (フロントエンドプレビュー互換性のため) |
|
||||
|
||||
### Barcode Object {#barcode-object}
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| type | string | バーコード形式 (QRCode、EAN-13、Code128、DataMatrix、PDF417 など) |
|
||||
| text | string | バーコードのデコードされたコンテンツ |
|
||||
| position | object | topLeft、topRight、bottomLeft、bottomRight の座標を持つバウンディングボックス |
|
||||
|
||||
## Supported Barcode Types {#supported-barcode-types}
|
||||
|
||||
1D バーコード: Code128、Code39、Code93、Codabar、EAN-8、EAN-13、ITF、UPC-A、UPC-E
|
||||
|
||||
2D バーコード: QRCode、DataMatrix、PDF417、Aztec、MaxiCode
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- バーコード検出には zxing-wasm ライブラリを使用します。
|
||||
- 注釈付き画像は、検出された各バーコードに色付きのポリゴンバウンディングボックスと番号付きラベルを重ねて表示します。
|
||||
- 1 枚の画像で最大 255 個のバーコードを検出できます。
|
||||
- バーコードが見つからない場合、`barcodes` は空の配列になり、`annotatedUrl` は null になります。
|
||||
- `tryHarder` モードは処理時間を犠牲にしてより徹底的なスキャンを実行します。クリーンでよく整列したバーコードを高速に処理するには無効にしてください。
|
||||
- 注釈付き出力は常に PNG 形式です。
|
||||
- HEIC、RAW、PSD、SVG の入力はスキャン前に自動的にデコードされます。
|
||||
- 処理前に EXIF の向きが自動的に適用されます。
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
description: "プレーンなスクリーンショットを、グラデーション背景、デバイスフレーム、シャドウ、SNS 向けサイズで洗練された画像に仕上げます。"
|
||||
i18n_source_hash: 8fd8a930a45e
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 6b0a1b465ae7
|
||||
---
|
||||
|
||||
# Beautify Screenshot {#beautify-screenshot}
|
||||
|
||||
スクリーンショットにグラデーション背景、デバイスフレーム、シャドウ、ウォーターマーク、SNS 向けサイズを追加します。プロダクトマーケティング、SNS、ドキュメント向けに洗練された画像を作成するのに最適です。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/beautify`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| backgroundType | string | No | `"linear-gradient"` | 背景の種類: `solid`、`linear-gradient`、`radial-gradient`、`image`、`transparent` |
|
||||
| backgroundColor | string | No | `"#667eea"` | 単色の背景色 (`backgroundType` が `solid` の場合に使用) |
|
||||
| gradientStops | array | No | `[{"color":"#667eea","position":0},{"color":"#764ba2","position":100}]` | グラデーションのカラーストップ (最小 2)。各ストップは `color` (16 進) と `position` (0 ~ 100) を持ちます。 |
|
||||
| gradientAngle | number | No | 135 | グラデーションの角度 (度) (0 ~ 360) |
|
||||
| padding | number | No | 64 | 画像周辺のパディング (ピクセル) (0 ~ 256) |
|
||||
| borderRadius | number | No | 12 | スクリーンショットの角の丸み (0 ~ 64) |
|
||||
| shadowPreset | string | No | `"subtle"` | シャドウプリセット: `none`、`subtle`、`medium`、`dramatic`、`custom` |
|
||||
| shadowBlur | number | No | 20 | カスタムシャドウのぼかし半径 (0 ~ 100、`shadowPreset` が `custom` の場合に使用) |
|
||||
| shadowOffsetX | number | No | 0 | カスタムシャドウの水平オフセット (-50 ~ 50) |
|
||||
| shadowOffsetY | number | No | 10 | カスタムシャドウの垂直オフセット (-50 ~ 50) |
|
||||
| shadowColor | string | No | `"#000000"` | カスタムシャドウの色 (16 進) |
|
||||
| shadowOpacity | number | No | 30 | カスタムシャドウの不透明度 (0 ~ 100) |
|
||||
| frame | string | No | `"none"` | デバイスまたはウィンドウのフレーム: `none`、`macos-light`、`macos-dark`、`windows-light`、`windows-dark`、`browser-light`、`browser-dark`、`iphone`、`iphone-dark`、`macbook`、`macbook-dark`、`ipad`、`ipad-dark` |
|
||||
| frameTitle | string | No | - | ウィンドウフレームのタイトルバーに表示されるタイトルテキスト |
|
||||
| socialPreset | string | No | `"none"` | SNS 向けサイズにリサイズ: `none`、`twitter`、`linkedin`、`instagram-square`、`instagram-story`、`facebook`、`producthunt` |
|
||||
| watermarkText | string | No | - | 任意のウォーターマークテキストオーバーレイ |
|
||||
| watermarkPosition | string | No | `"bottom-right"` | ウォーターマークの位置: `top-left`、`top-right`、`bottom-left`、`bottom-right`、`center` |
|
||||
| watermarkOpacity | number | No | 50 | ウォーターマークの不透明度 (0 ~ 100) |
|
||||
| outputFormat | string | No | `"png"` | 出力形式: `png`、`jpeg`、`webp` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/beautify \
|
||||
-F "file=@screenshot.png" \
|
||||
-F 'settings={"backgroundType":"linear-gradient","gradientStops":[{"color":"#667eea","position":0},{"color":"#764ba2","position":100}],"gradientAngle":135,"padding":64,"borderRadius":12,"shadowPreset":"medium","frame":"macos-dark","socialPreset":"twitter"}'
|
||||
```
|
||||
|
||||
### With Background Image {#with-background-image}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/beautify \
|
||||
-F "file=@screenshot.png" \
|
||||
-F "backgroundImage=@bg-texture.jpg" \
|
||||
-F 'settings={"backgroundType":"image","padding":80,"borderRadius":16,"shadowPreset":"dramatic"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/screenshot.png",
|
||||
"originalSize": 234567,
|
||||
"processedSize": 567890
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 2 つのファイルフィールドを受け付けます: `file` (必須、メインのスクリーンショット) と `backgroundImage` (任意、`backgroundType` が `image` の場合に使用)。
|
||||
- HEIC、RAW、PSD、SVG の入力形式をサポートします (自動的にデコードされます)。
|
||||
- シャドウプリセットは特定の値にマッピングされます:
|
||||
- `subtle`: ぼかし 20、offsetY 4、不透明度 20%
|
||||
- `medium`: ぼかし 40、offsetY 10、不透明度 35%
|
||||
- `dramatic`: ぼかし 80、offsetY 20、不透明度 50%
|
||||
- SNS プリセットは、`contain` モードを使用して最終出力をターゲットサイズに合わせてリサイズします:
|
||||
- `twitter`: 1600x900
|
||||
- `linkedin`: 1200x627
|
||||
- `instagram-square`: 1080x1080
|
||||
- `instagram-story`: 1080x1920
|
||||
- `facebook`: 1200x630
|
||||
- `producthunt`: 1270x760
|
||||
- デバイスフレーム (`iphone`、`macbook`、`ipad`) は画像の周囲にハードウェアのベゼルを適用し、`borderRadius` 設定をスキップします。
|
||||
- 透明度が必要な場合 (シャドウ、角の丸み、デバイスフレーム、透明背景)、`jpeg` が選択されていても出力は PNG に強制されます。
|
||||
- 画像背景はパイプライン/バッチモードではサポートされません。
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "AI を使用して、被写体をシャープに保ちながら背景をぼかします。"
|
||||
i18n_source_hash: 9073f10e6e9d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4539ec15578d
|
||||
---
|
||||
|
||||
# Blur Background {#blur-background}
|
||||
|
||||
被写体をシャープに保ちながら画像の背景をぼかします。AI モデルが被写体を切り出し、元の背景にぼかしを適用して、シャープな被写体を上に合成します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/blur-background`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| intensity | integer | No | `50` | ぼかしの強度 (1 ~ 100) |
|
||||
| feather | integer | No | `0` | エッジのぼかし半径 (0 ~ 20) |
|
||||
| format | string | No | `"png"` | 出力形式: `png` または `webp` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/blur-background \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"intensity": 75, "feather": 3}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
進捗は `GET /api/v1/jobs/{jobId}/progress` の SSE で追跡できます。ジョブが完了すると、SSE ストリームがダウンロード URL 付きの `completed` イベントを発行します。
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- これは `202 Accepted` を返し、非同期で処理する AI 対応ツールです。SSE エンドポイントに接続して進捗の更新と最終結果を受け取ってください。
|
||||
- **background-removal** 機能バンドルのインストールが必要です。バンドルが利用できない場合は `501` を返します。
|
||||
- 強度の値が高いほど、より強いぼかし効果が得られます。80 を超える値は、ボケのような際立った分離を作り出します。
|
||||
- HEIC、RAW、PSD、SVG の入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
description: "AI 顔検出で画像内の顔を自動検出してぼかし、プライバシー保護と GDPR に準拠した匿名化を行います。"
|
||||
i18n_source_hash: fb861c12aea5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a863b71fd7e4
|
||||
---
|
||||
|
||||
# Face / PII Blur {#face-pii-blur}
|
||||
|
||||
AI 対応の顔検出 (MediaPipe) を使用して、画像内の顔を自動検出してぼかします。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/blur-faces`
|
||||
|
||||
**処理:** 非同期 (202 を返し、SSE でステータスを `/api/v1/jobs/{jobId}/progress` からポーリング)
|
||||
|
||||
**モデルバンドル:** `face-detection` (200 ~ 300 MB)
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル (マルチパート) |
|
||||
| blurRadius | number | No | `30` | 検出された顔に適用するぼかし半径 (1 ~ 100) |
|
||||
| sensitivity | number | No | `0.5` | 顔検出の感度 (0 ~ 1)。値が低いほど、より高い信頼度で検出する顔が少なくなります |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/blur-faces \
|
||||
-F "file=@group-photo.jpg" \
|
||||
-F 'settings={"blurRadius":40,"sensitivity":0.3}'
|
||||
```
|
||||
|
||||
## Response {#response}
|
||||
|
||||
### Initial Response (202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### Progress (SSE at `/api/v1/jobs/{jobId}/progress`) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Detecting faces...","percent":40}
|
||||
```
|
||||
|
||||
### Final Result (via SSE) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/group-photo_blurred.jpg",
|
||||
"originalSize": 450000,
|
||||
"processedSize": 420000,
|
||||
"facesDetected": 3,
|
||||
"faces": [
|
||||
{"x": 100, "y": 50, "w": 80, "h": 80},
|
||||
{"x": 300, "y": 60, "w": 75, "h": 75},
|
||||
{"x": 500, "y": 55, "w": 85, "h": 85}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### No Faces Detected {#no-faces-detected}
|
||||
|
||||
顔が見つからない場合、結果に警告が含まれます:
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"facesDetected": 0,
|
||||
"warning": "No faces detected in this image. Try increasing detection sensitivity."
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- `face-detection` モデルバンドルのインストールが必要です (200 ~ 300 MB)。
|
||||
- 出力形式は入力形式に自動的に一致します。
|
||||
- `faces` 配列には、検出された各顔のバウンディングボックス座標 (x、y、width、height) が含まれます。
|
||||
- 部分的に隠れている顔を含め、より多くの顔を検出するには `sensitivity` を上げてください (1.0 に近づける)。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力形式を自動デコードでサポートします。
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "予測可能で制御しやすい順序で、画像にボーダー、パディング、角丸、ドロップシャドウを追加します。"
|
||||
i18n_source_hash: 8845150736a9
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5356b70a6b09
|
||||
---
|
||||
|
||||
# Border & Frame {#border-frame}
|
||||
|
||||
画像にボーダー、パディング、角丸、ドロップシャドウを追加します。このツールは次の順序でエフェクトを適用します: パディング、ボーダー、角の丸み、シャドウ。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/border`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| borderWidth | number | No | 10 | ボーダーの太さ (ピクセル) (0 ~ 2000) |
|
||||
| borderColor | string | No | `"#000000"` | ボーダーの色 (16 進) (例: `#FF0000`) |
|
||||
| padding | number | No | 0 | 画像とボーダーの間の内側パディング (ピクセル) (0 ~ 200) |
|
||||
| paddingColor | string | No | `"#FFFFFF"` | パディングの塗りつぶし色 (16 進) |
|
||||
| cornerRadius | number | No | 0 | 角の丸み (ピクセル) (0 ~ 2000) |
|
||||
| shadow | boolean | No | `false` | ドロップシャドウを追加するかどうか |
|
||||
| shadowBlur | number | No | 15 | シャドウのぼかし半径 (1 ~ 200) |
|
||||
| shadowOffsetX | number | No | 0 | シャドウの水平オフセット (-50 ~ 50) |
|
||||
| shadowOffsetY | number | No | 5 | シャドウの垂直オフセット (-50 ~ 50) |
|
||||
| shadowColor | string | No | `"#000000"` | シャドウの色 (16 進) |
|
||||
| shadowOpacity | number | No | 40 | シャドウの不透明度 (パーセント) (0 ~ 100) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/border \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"borderWidth":20,"borderColor":"#333333","cornerRadius":16,"shadow":true,"shadowBlur":25,"shadowOpacity":50}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.png",
|
||||
"originalSize": 456789,
|
||||
"processedSize": 523456
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 標準の `createToolRoute` ファクトリを使用します。マルチパートアップロードで 1 つの画像ファイルを受け付けます。
|
||||
- HEIC、RAW、PSD、SVG の入力形式をサポートします (自動的にデコードされます)。
|
||||
- 処理順序: まずパディングが追加され、次にボーダーが周囲を囲み、その後角の丸みが適用され、最後にシャドウが合成されます。
|
||||
- `cornerRadius` または `shadow` が有効な場合、透明度を保持するために出力は (入力形式に関係なく) PNG に強制されます。アルファをサポートする形式 (PNG、WebP、AVIF) は元の形式を維持します。
|
||||
- シャドウは形状を認識します。長方形のシャドウを作成するのではなく、角丸に沿います。
|
||||
- `borderWidth` を 0 に設定し、`cornerRadius` と `shadow` のみを使用すると、フレームなしの角丸シャドウ効果が作成されます。
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
description: "パターンテンプレートを使用して複数のファイルをリネームし、ZIP としてダウンロードします。"
|
||||
i18n_source_hash: 2776dcc2f71c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e2e6d53898eb
|
||||
---
|
||||
|
||||
# Bulk Rename {#bulk-rename}
|
||||
|
||||
インデックス、ゼロ埋めインデックス、元のファイル名のプレースホルダーを持つパターンテンプレートを使用して、複数のファイルをリネームします。リネームされたすべてのファイルを含む ZIP アーカイブを返します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/bulk-rename`
|
||||
|
||||
複数のファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| pattern | string | No | `"image-{{index}}"` | プレースホルダーを含む命名パターン (最大 1000 文字) |
|
||||
| startIndex | number | No | `1` | 開始インデックス番号 |
|
||||
|
||||
### Pattern Placeholders {#pattern-placeholders}
|
||||
|
||||
| Placeholder | Description | Example |
|
||||
|-------------|-------------|---------|
|
||||
| `{{index}}` | `startIndex` から始まる連番 | `1`、`2`、`3` |
|
||||
| `{{padded}}` | ゼロ埋めされた連番 | `01`、`02`、`03` |
|
||||
| `{{original}}` | 拡張子なしの元のファイル名 | `photo`、`IMG_001` |
|
||||
|
||||
元のファイル拡張子は常に保持されます。
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/bulk-rename \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo1.jpg" \
|
||||
-F "file=@photo2.jpg" \
|
||||
-F "file=@photo3.jpg" \
|
||||
-F 'settings={"pattern": "vacation-{{padded}}", "startIndex": 1}'
|
||||
```
|
||||
|
||||
これは次を生成します: `vacation-1.jpg`、`vacation-2.jpg`、`vacation-3.jpg`
|
||||
|
||||
元のファイル名を使用する:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/bulk-rename \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@IMG_001.jpg" \
|
||||
-F "file=@IMG_002.jpg" \
|
||||
-F 'settings={"pattern": "2024-trip-{{original}}-{{index}}"}'
|
||||
```
|
||||
|
||||
これは次を生成します: `2024-trip-IMG_001-1.jpg`、`2024-trip-IMG_002-2.jpg`
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
レスポンスは (JSON レスポンスではなく) 直接ストリームされる ZIP ファイルです。レスポンスヘッダーは次のとおりです:
|
||||
|
||||
```
|
||||
Content-Type: application/zip
|
||||
Content-Disposition: attachment; filename="renamed-a1b2c3d4.zip"
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- このツールは画像を処理しません。ファイルをリネームして ZIP アーカイブにパッケージ化するだけです。
|
||||
- `{{padded}}` のゼロ埋め幅は、ファイルの総数に基づいて自動的に決定されます (例: 100 個のファイルの場合は 3 桁のゼロ埋めを使用: `001`、`002` など)。
|
||||
- ファイル拡張子は元のファイル名から保持されます。
|
||||
- ファイル名は安全でない文字を除去するためにサニタイズされます。
|
||||
- 少なくとも 1 つのファイルを指定する必要があります。
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: "画像を中央揃えの円形に切り抜き、四隅を透明にします。"
|
||||
i18n_source_hash: 06c50ccd96b2
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fc42eb0f3f5b
|
||||
---
|
||||
|
||||
# Circle Crop {#circle-crop}
|
||||
|
||||
画像を中央揃えの円形に切り抜き、四隅を透明にします。ズーム、オフセット、ボーダー、出力サイズを調整できます。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/circle-crop`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| zoom | number | No | `1` | ズーム係数 (1 ~ 5)。値が大きいほど切り抜きが狭くなります |
|
||||
| offsetX | number | No | `0.5` | 中心の水平位置 (0 ~ 1) |
|
||||
| offsetY | number | No | `0.5` | 中心の垂直位置 (0 ~ 1) |
|
||||
| borderWidth | integer | No | `0` | ボーダーの幅 (ピクセル) (0 ~ 200) |
|
||||
| borderColor | string | No | `"#ffffff"` | ボーダーの 16 進カラー |
|
||||
| background | string | No | `"transparent"` | 四隅の塗りつぶし: `"transparent"` または 16 進カラー |
|
||||
| outputSize | integer | No | - | 最終的な正方形のサイズ (ピクセル) (16 ~ 4096) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/circle-crop \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"zoom": 1.2, "borderWidth": 4, "borderColor": "#333333"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.png",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 185000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 透明な四隅を保持するため、出力は常に PNG です (`background` が単色に設定されている場合を除く)。
|
||||
- 円は画像の短い辺の内側に収まります。より狭く切り抜くには `zoom` を、表示領域をずらすには `offsetX`/`offsetY` を使用してください。
|
||||
- `outputSize` を指定すると、切り抜き後にその正方形のサイズにリサイズされます。
|
||||
- HEIC、RAW、PSD、SVG の入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
description: "25種類以上のテンプレート、調整可能な間隔と角丸、セルごとのパンとズームで複数の画像をグリッドコラージュに組み合わせます。"
|
||||
i18n_source_hash: 96f2055717df
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7996d8d33ce4
|
||||
---
|
||||
|
||||
# コラージュ / グリッド {#collage-grid}
|
||||
|
||||
25種類以上のテンプレートを使って複数の画像を美しいグリッドコラージュに組み合わせます。2〜9枚の画像レイアウトに対応し、間隔、角丸半径、背景色、セルごとのパン/ズームをカスタマイズできます。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/collage`
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| templateId | string | はい | - | テンプレートレイアウトID(例: `2-h-equal`、`3-left-large`、`4-grid`、`9-grid`) |
|
||||
| cells | array | いいえ | - | `imageIndex`、`panX`、`panY`、`zoom`、`objectFit` を含むセルごとの設定配列 |
|
||||
| cells[].imageIndex | integer | はい | - | このセルに配置する画像のインデックス(0始まり) |
|
||||
| cells[].panX | number | いいえ | 0 | 水平方向のパンオフセット(-100〜100) |
|
||||
| cells[].panY | number | いいえ | 0 | 垂直方向のパンオフセット(-100〜100) |
|
||||
| cells[].zoom | number | いいえ | 1 | ズームレベル(1〜10) |
|
||||
| cells[].objectFit | string | いいえ | `"cover"` | 画像がセルを満たす方法: `cover` または `contain` |
|
||||
| gap | number | いいえ | 8 | セル間の間隔(ピクセル、0〜500) |
|
||||
| cornerRadius | number | いいえ | 0 | 各セルの角丸半径(ピクセル、0〜500) |
|
||||
| backgroundColor | string | いいえ | `"#FFFFFF"` | 16進数または `"transparent"` の背景色 |
|
||||
| aspectRatio | string | いいえ | `"free"` | キャンバスのアスペクト比: `free`、`1:1`、`4:3`、`3:2`、`16:9`、`9:16`、`4:5` |
|
||||
| outputFormat | string | いいえ | `"png"` | 出力形式: `png`、`jpeg`、`webp`、`avif`、`jxl` |
|
||||
| quality | number | いいえ | 90 | 出力品質(1〜100) |
|
||||
|
||||
## 利用可能なテンプレート {#available-templates}
|
||||
|
||||
| テンプレートID | 画像数 | レイアウト |
|
||||
|-------------|--------|--------|
|
||||
| `2-h-equal` | 2 | 等幅2列 |
|
||||
| `2-v-equal` | 2 | 等幅2行 |
|
||||
| `2-h-left-large` | 2 | 左2/3、右1/3 |
|
||||
| `2-h-right-large` | 2 | 左1/3、右2/3 |
|
||||
| `3-left-large` | 3 | 左に大、右に2つ縦積み |
|
||||
| `3-right-large` | 3 | 左に2つ縦積み、右に大 |
|
||||
| `3-top-large` | 3 | 上に大、下に2列 |
|
||||
| `3-h-equal` | 3 | 等幅3列 |
|
||||
| `3-v-equal` | 3 | 等幅3行 |
|
||||
| `4-grid` | 4 | 2x2グリッド |
|
||||
| `4-left-large` | 4 | 左に大、右に3つ縦積み |
|
||||
| `4-top-large` | 4 | 上に大、下に3列 |
|
||||
| `4-bottom-large` | 4 | 上に3列、下に大 |
|
||||
| `5-top2-bottom3` | 5 | 上に2つ、下に3つ |
|
||||
| `5-top3-bottom2` | 5 | 上に3つ、下に2つ |
|
||||
| `5-left-large` | 5 | 左に大、右に4つ縦積み |
|
||||
| `5-center-large` | 5 | 中央に大、四隅に4つ |
|
||||
| `6-grid-2x3` | 6 | 2列 x 3行 |
|
||||
| `6-grid-3x2` | 6 | 3列 x 2行 |
|
||||
| `6-top-large` | 6 | 上に大、下に5列 |
|
||||
| `7-mosaic` | 7 | モザイクレイアウト |
|
||||
| `8-mosaic` | 8 | モザイクレイアウト |
|
||||
| `9-grid` | 9 | 3x3グリッド |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/collage \
|
||||
-F "file=@photo1.jpg" \
|
||||
-F "file=@photo2.jpg" \
|
||||
-F "file=@photo3.jpg" \
|
||||
-F "file=@photo4.jpg" \
|
||||
-F 'settings={"templateId":"4-grid","gap":12,"cornerRadius":8,"backgroundColor":"#F5F5F5","outputFormat":"png","quality":90}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/collage.png",
|
||||
"originalSize": 2456789,
|
||||
"processedSize": 1823456
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- multipartリクエストで複数の画像ファイルをアップロードします。画像はアップロード順にテンプレートのセルへ割り当てられます。
|
||||
- テンプレートが対応する数より多くの画像をアップロードした場合、余分な画像は無視されます。
|
||||
- HEIC、RAW、PSD、SVG の入力形式に対応します(自動でデコードされます)。
|
||||
- キャンバスの基準サイズは長辺2400pxで、選択したアスペクト比に応じてスケーリングされます。
|
||||
- `aspectRatio` が `"free"` の場合、キャンバスはデフォルトで4:3(2400x1800)になります。
|
||||
- セルごとの `panX`/`panY` 値はセル内の切り抜き位置をずらします。100 は一方の端いっぱいまで、-100 は反対側に移動します。
|
||||
- `"transparent"` の背景色は、`png`、`webp`、`avif` の出力形式でのみ保持されます。
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "各種の色覚異常を持つ人に画像がどう見えるかをシミュレートします。"
|
||||
i18n_source_hash: 0b537628ba79
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cfdee097b0de
|
||||
---
|
||||
|
||||
# 色覚異常シミュレーション {#color-blindness-simulation}
|
||||
|
||||
色覚異常(CVD)をシミュレートして、さまざまな種類の色覚異常を持つ人に画像がどう見えるかをプレビューします。デザイン、チャート、UIのアクセシビリティテストに便利です。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/color-blindness`
|
||||
|
||||
画像ファイルとJSONの `settings` フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| simulationType | string | いいえ | `"deuteranomaly"` | シミュレートする色覚異常の種類 |
|
||||
|
||||
### シミュレーションの種類 {#simulation-types}
|
||||
|
||||
| 値 | 状態 | 説明 |
|
||||
|-------|-----------|-------------|
|
||||
| `protanopia` | 赤色盲 | 赤錐体細胞の完全欠損 |
|
||||
| `deuteranopia` | 緑色盲 | 緑錐体細胞の完全欠損 |
|
||||
| `tritanopia` | 青色盲 | 青錐体細胞の完全欠損 |
|
||||
| `protanomaly` | 赤色弱 | 赤錐体の感度低下 |
|
||||
| `deuteranomaly` | 緑色弱 | 緑錐体の感度低下(最も一般的) |
|
||||
| `tritanomaly` | 青色弱 | 青錐体の感度低下 |
|
||||
| `achromatopsia` | 全色盲 | 色覚の完全欠損 |
|
||||
| `blueConeMonochromacy` | 青錐体のみ | 青錐体のみ機能する |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/color-blindness \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@design.png" \
|
||||
-F 'settings={"simulationType": "deuteranopia"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/design.png",
|
||||
"originalSize": 1850000,
|
||||
"processedSize": 1820000
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- 第二色弱(緑色弱)がデフォルトなのは、これが最も一般的な色覚異常であり、男性の約6%に影響するためです。
|
||||
- このシミュレーションは、錐体光受容体の低下または欠損が知覚される色をどう変化させるかをモデル化した色変換行列を使用します。
|
||||
- このツールは非破壊的で、プレビューのみを生成します。アクセシビリティのために元の画像を変更することはありません。
|
||||
- 出力形式は入力形式に一致します。HEIC、RAW、PSD、SVG の入力は処理前に自動でデコードされます。
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
description: "画像から主要な色をカラーパレットとして抽出します。"
|
||||
i18n_source_hash: 65ab22dd75a9
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: dbe78e52bdf9
|
||||
---
|
||||
|
||||
# カラーパレット {#color-palette}
|
||||
|
||||
画像から主要な色を抽出し、16進数のカラー値として返します。量子化された頻度分析を使って、最も目立つ視覚的に区別しやすい色を特定します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/color-palette`
|
||||
|
||||
画像ファイルとオプションのJSONの `settings` フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| count | integer | いいえ | `8` | 抽出する色の数(2〜16) |
|
||||
| format | string | いいえ | `"hex"` | カラー形式: `hex`、`rgb`、`hsl` |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/color-palette \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"count": 6, "format": "hex"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"filename": "photo.jpg",
|
||||
"colors": [
|
||||
"#304080",
|
||||
"#e0a060",
|
||||
"#f0f0f0",
|
||||
"#203020",
|
||||
"#a0c0e0",
|
||||
"#806040"
|
||||
],
|
||||
"hex": [
|
||||
"#304080",
|
||||
"#e0a060",
|
||||
"#f0f0f0",
|
||||
"#203020",
|
||||
"#a0c0e0",
|
||||
"#806040"
|
||||
],
|
||||
"count": 6
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンスフィールド {#response-fields}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| filename | string | サニタイズされたファイル名 |
|
||||
| colors | array | 要求された形式のカラー文字列の配列。優勢度の順(最も頻度が高いものが先頭) |
|
||||
| hex | array | 16進数のカラー文字列の配列(`format` の設定に関わらず常に16進数) |
|
||||
| count | number | 抽出された色の数 |
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- 最大 `count` の主要色を返します(デフォルト8、範囲2〜16)。頻度の順(最も一般的なものが先頭)で並びます。
|
||||
- 画像は分析のため内部的に100x100ピクセルにリサイズされるため、パレットは細かいディテールではなく全体的な色の分布を表します。
|
||||
- 色はメディアンカット量子化で抽出されます。これは最も範囲が広いチャンネルに沿ってピクセル集団を再帰的に分割します。
|
||||
- 分析前にアルファチャンネルは削除されるため、透明な領域は考慮されません。
|
||||
- これは読み取り専用のエンドポイントです。ダウンロード可能な出力ファイルや `jobId` は生成しません。
|
||||
- HEIC、RAW、PSD、SVG の入力は分析前に自動でデコードされます。
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
description: "DDColor AIモデルで、白黒またはグレースケール写真を自動でカラー化します。"
|
||||
i18n_source_hash: 688aa3abbdae
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c1439688f3be
|
||||
---
|
||||
|
||||
# AIカラー化 {#ai-colorization}
|
||||
|
||||
AI(OpenCV DNNフォールバック付きのDDColorモデル)を使って、白黒またはグレースケール写真をフルカラーに変換します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/colorize`
|
||||
|
||||
**処理:** 非同期(202を返し、SSE経由でステータスを取得するには `/api/v1/jobs/{jobId}/progress` をポーリング)
|
||||
|
||||
**モデルバンドル:** `object-eraser-colorize`(1〜2 GB)
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | はい | - | 画像ファイル(multipart) |
|
||||
| intensity | number | いいえ | `1.0` | 色の強度(0〜1)。値が低いほどカラー化が控えめになります |
|
||||
| model | string | いいえ | `"auto"` | 使用するモデル: `auto`、`ddcolor`、`opencv` |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/colorize \
|
||||
-F "file=@old-bw-photo.jpg" \
|
||||
-F 'settings={"intensity":0.9,"model":"auto"}'
|
||||
```
|
||||
|
||||
## レスポンス {#response}
|
||||
|
||||
### 初回レスポンス(202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(`/api/v1/jobs/{jobId}/progress` でのSSE) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Colorizing...","percent":55}
|
||||
```
|
||||
|
||||
### 最終結果(SSE経由) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/old-bw-photo_colorized.jpg",
|
||||
"previewUrl": "/api/v1/download/{jobId}/preview.webp",
|
||||
"originalSize": 180000,
|
||||
"processedSize": 210000,
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"method": "ddcolor"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- `object-eraser-colorize` モデルバンドル(1〜2 GB)のインストールが必要です。
|
||||
- DDColorはより高品質な結果を生成しますが低速です。OpenCV DNNは高速でわずかに品質が劣ります。`auto` は利用可能な場合にDDColorを使用し、OpenCVをフォールバックとします。
|
||||
- `intensity` パラメータは元のグレースケールとAIカラー化結果の間をブレンドします。フルカラーには1.0を、部分的に彩度を落としたビンテージ風の見た目には低い値を使用します。
|
||||
- 出力形式は入力形式に自動で一致します。
|
||||
- ブラウザでプレビューできない出力形式の場合、メイン出力と併せてWebPプレビューが生成されます。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力形式に自動デコードで対応します。
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
description: "2つの画像を並べて比較し、ピクセルレベルの差分の可視化と類似度スコアを表示します。"
|
||||
i18n_source_hash: cc0a02bd75c6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 9d731a155cb3
|
||||
---
|
||||
|
||||
# 画像比較 {#image-compare}
|
||||
|
||||
2つの画像をアップロードして、ピクセルレベルの差分マップと数値的な類似度パーセンテージを計算します。出力は変化した領域を赤で強調した差分画像です。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/compare`
|
||||
|
||||
**2つの**画像ファイルを含むmultipartフォームデータを受け付けます。設定フィールドは不要です。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
このツールに設定可能なパラメータはありません。ちょうど2つの画像ファイルをアップロードしてください。
|
||||
|
||||
| フィールド | 型 | 必須 | 説明 |
|
||||
|-------|------|----------|-------------|
|
||||
| file(1つ目) | file | はい | 1つ目の画像 |
|
||||
| file(2つ目) | file | はい | 2つ目の画像 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/compare \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@original.jpg" \
|
||||
-F "file=@modified.jpg"
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"similarity": 94.52,
|
||||
"dimensions": { "width": 1920, "height": 1080 },
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/diff.png",
|
||||
"originalSize": 4900000,
|
||||
"processedSize": 280000
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンスフィールド {#response-fields}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| jobId | string | 差分画像をダウンロードするためのジョブ識別子 |
|
||||
| similarity | number | 2つの画像間の類似度パーセンテージ(0〜100) |
|
||||
| dimensions | object | 比較に使用した幅と高さ |
|
||||
| downloadUrl | string | 生成された差分画像をダウンロードするURL |
|
||||
| originalSize | number | 両方の入力画像を合わせたサイズ(バイト) |
|
||||
| processedSize | number | 差分出力画像のサイズ(バイト) |
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- 両方の画像は比較の前に同じ寸法(各軸の最大値)にリサイズされます。
|
||||
- 差分画像は変化の大きさに比例した不透明度で差分を赤く強調します。同一またはほぼ同一のピクセル(差 < 10)は元の半透明バージョンとして表示されます。
|
||||
- 類似度は全ピクセルにわたる平均ピクセル差の逆数として計算され、パーセンテージで表されます。
|
||||
- 類似度100%は、(比較解像度で)画像がピクセル単位で同一であることを意味します。
|
||||
- 差分出力は入力形式に関わらず常にPNG形式です。
|
||||
- 両方の画像は比較の前に検証・デコードされます(HEIC、RAW、PSD、SVG に対応)。
|
||||
- 処理前に両方の画像でEXIFの向きが自動適用されます。
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
description: "位置、不透明度、ブレンドモードを指定して画像を重ね合わせ、合成します。"
|
||||
i18n_source_hash: c5d09eb13fde
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4d3d075ee04b
|
||||
---
|
||||
|
||||
# 画像合成 {#image-composition}
|
||||
|
||||
ベース画像の上にオーバーレイ画像を重ね、位置、不透明度、ブレンドモードを設定します。ロゴやグラフィックの合成、複数画像の組み合わせに便利です。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/compose`
|
||||
|
||||
**2つの**画像ファイルとJSONの `settings` フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| x | number | いいえ | `0` | 左上隅からのオーバーレイの水平オフセット(ピクセル、最小0) |
|
||||
| y | number | いいえ | `0` | 左上隅からのオーバーレイの垂直オフセット(ピクセル、最小0) |
|
||||
| opacity | number | いいえ | `100` | オーバーレイの不透明度パーセンテージ(0〜100) |
|
||||
| blendMode | string | いいえ | `"over"` | 合成のブレンドモード |
|
||||
|
||||
### ブレンドモード {#blend-modes}
|
||||
|
||||
| 値 | 説明 |
|
||||
|-------|-------------|
|
||||
| `over` | 通常のオーバーレイ(デフォルト) |
|
||||
| `multiply` | ピクセル値を乗算して暗くする |
|
||||
| `screen` | 反転・乗算・再反転で明るくする |
|
||||
| `overlay` | ベースの明るさに基づいて乗算とスクリーンを組み合わせる |
|
||||
| `darken` | 各レイヤーの暗い方のピクセルを残す |
|
||||
| `lighten` | 各レイヤーの明るい方のピクセルを残す |
|
||||
| `hard-light` | 強いコントラストのオーバーレイ |
|
||||
| `soft-light` | 控えめなコントラストのオーバーレイ |
|
||||
| `difference` | レイヤー間の絶対差 |
|
||||
| `exclusion` | 差分に似ているがコントラストが低い |
|
||||
|
||||
### ファイルフィールド {#file-fields}
|
||||
|
||||
| フィールド名 | 必須 | 説明 |
|
||||
|------------|----------|-------------|
|
||||
| file | はい | ベース/背景画像 |
|
||||
| overlay | はい | オーバーレイ/前景画像 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/compose \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@background.jpg" \
|
||||
-F "overlay=@graphic.png" \
|
||||
-F 'settings={"x": 100, "y": 50, "opacity": 80, "blendMode": "over"}'
|
||||
```
|
||||
|
||||
乗算ブレンドモードを使用:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/compose \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F "overlay=@texture.jpg" \
|
||||
-F 'settings={"x": 0, "y": 0, "opacity": 50, "blendMode": "multiply"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/background.jpg",
|
||||
"originalSize": 3200000,
|
||||
"processedSize": 3450000
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- 両方の画像は合成の前に検証・デコードされます(HEIC、RAW、PSD、SVG に対応)。
|
||||
- オーバーレイは `x` と `y` で指定した正確なピクセル座標に配置されます。フィットするようにリサイズはされません。
|
||||
- 不透明度が100未満の場合、ブレンド前にオーバーレイへアルファマスクが適用されます。
|
||||
- オーバーレイはベース画像の境界を越えて広がることができます(その部分はクリップされます)。
|
||||
- 処理前に両方の画像でEXIFの向きが自動適用されます。
|
||||
- 出力の寸法はベース画像の寸法に一致します。
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "品質レベル、または目標ファイルサイズによって画像のファイルサイズを削減します。"
|
||||
i18n_source_hash: af4685da7e64
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2aa6e052c339
|
||||
---
|
||||
|
||||
# 圧縮 {#compress}
|
||||
|
||||
品質レベルまたはキロバイト単位の目標ファイルサイズを指定して画像のファイルサイズを削減します。目標サイズに正確に合わせるため、反復的な二分探索を使用します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/compress`
|
||||
|
||||
画像ファイルとJSONの `settings` フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | いいえ | `"quality"` | 圧縮モード: `quality` または `targetSize` |
|
||||
| quality | number | いいえ | `80` | 品質レベル(1〜100)。モードが `quality` のときに使用されます。 |
|
||||
| targetSizeKb | number | いいえ | - | 目標ファイルサイズ(キロバイト)。モードが `targetSize` のときに使用されます。 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
品質60に圧縮:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/compress \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"mode": "quality", "quality": 60}'
|
||||
```
|
||||
|
||||
目標サイズ200 KBに圧縮:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/compress \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"mode": "targetSize", "targetSizeKb": 200}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 204800
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- `quality` モードでは、値が低いほどファイルが小さくなり、圧縮アーティファクトが多くなります。ウェブ用途では80が良いデフォルトです。
|
||||
- `targetSize` モードでは、エンジンが目標を超えない範囲でできるだけ近づけるよう反復圧縮を行います。
|
||||
- 出力形式は入力形式に一致します。圧縮は各形式のネイティブなエンコード(例: JPEGファイルにはJPEG品質、WebPファイルにはWebP品質)に適用されます。
|
||||
- デフォルトの品質(80)で問題ない場合は、`quality` パラメータを完全に省略できます。
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
description: "重要度の低い経路に沿ってピクセルを追加または削除するシーム彫刻リサイズで、重要なコンテンツと顔を保持します。"
|
||||
i18n_source_hash: f383b28ab62a
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 9d8d75503812
|
||||
---
|
||||
|
||||
# コンテンツ対応リサイズ {#content-aware-resize}
|
||||
|
||||
視覚的重要度が最も低い経路に沿ってピクセルをインテリジェントに削除または追加するシームカービングリサイズで、重要なコンテンツを保持し、任意で顔を保護します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/content-aware-resize`
|
||||
|
||||
**処理:** 同期(結果を直接返します)
|
||||
|
||||
**モデルバンドル:** 基本操作には不要。顔の保護を有効にすると `face-detection` バンドル(200〜300 MB)を使用します。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | はい | - | 画像ファイル(multipart) |
|
||||
| width | number | いいえ | - | 目標の幅(ピクセル) |
|
||||
| height | number | いいえ | - | 目標の高さ(ピクセル) |
|
||||
| protectFaces | boolean | いいえ | `false` | 顔を検出してシーム削除から保護する |
|
||||
| blurRadius | number | いいえ | `4` | エネルギー計算のための前処理ぼかし半径(0〜20) |
|
||||
| sobelThreshold | number | いいえ | `2` | Sobelエッジ検出のしきい値(1〜20)。値が高いほどアルゴリズムがより積極的になります |
|
||||
| square | boolean | いいえ | `false` | 正方形にリサイズする(短い方の寸法を使用) |
|
||||
|
||||
`width`、`height`、`square` のうち少なくとも1つを指定する必要があります。
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/content-aware-resize \
|
||||
-F "file=@landscape.jpg" \
|
||||
-F 'settings={"width":800,"protectFaces":true}'
|
||||
```
|
||||
|
||||
## レスポンス(200 OK) {#response-200-ok}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/landscape_seam.png",
|
||||
"originalSize": 450000,
|
||||
"processedSize": 380000,
|
||||
"width": 800,
|
||||
"height": 600
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- このカスタムルートは現在、同期の200レスポンスを返します。
|
||||
- コンテンツ対応リサイズには `caire` シームカービングライブラリを使用します。
|
||||
- 寸法を縮小する(シームを削除する)のみです。画像を元のサイズより拡大することはできません。
|
||||
- `protectFaces` オプションはAI顔検出を使って顔領域を高エネルギーとしてマークし、シームが顔を通過するのを防ぎます。
|
||||
- `blurRadius` はエネルギーマップ計算前のスムージングを制御します。値が高いほどエネルギーマップがより均一になり、ノイズの多い画像に役立ちます。
|
||||
- `sobelThreshold` はエッジがどれだけ積極的に検出されるかに影響します。値が低いほど微細なエッジがより保持されます。
|
||||
- 出力は常にPNG形式です。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力形式に自動デコードで対応します。
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
description: "AVIF、JXL、HEIC などのモダンな形式を含め、画像を各形式間で変換します。"
|
||||
i18n_source_hash: 562f8270e8c3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7676d19fa60d
|
||||
---
|
||||
|
||||
# 変換 {#convert}
|
||||
|
||||
画像を各形式間で変換します。一般的なウェブ形式に加え、HEIC、JXL、BMP、ICO、JP2、QOI、PSD などの特殊な形式にも対応します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/convert`
|
||||
|
||||
画像ファイルとJSONの `settings` フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | はい | - | 目標形式: `jpg`、`png`、`webp`、`avif`、`tiff`、`gif`、`heic`、`heif`、`jxl`、`bmp`、`ico`、`jp2`、`qoi`、`psd`、`ppm`、`eps`、`tga` |
|
||||
| quality | number | いいえ | - | 出力品質(1〜100)。jpg、webp、avif、heic などの非可逆形式に適用されます。 |
|
||||
|
||||
## 対応する出力形式 {#supported-output-formats}
|
||||
|
||||
| 形式 | 種類 | 補足 |
|
||||
|--------|------|-------|
|
||||
| jpg | 非可逆 | JPEG、最も互換性が高い |
|
||||
| png | 可逆 | 透明度に対応 |
|
||||
| webp | 両方 | モダンなウェブ形式、良好な圧縮 |
|
||||
| avif | 非可逆 | 次世代形式、優れた圧縮 |
|
||||
| tiff | 両方 | 印刷/出版ワークフロー |
|
||||
| gif | 可逆 | 256色に制限 |
|
||||
| heic / heif | 非可逆 | Appleエコシステムの形式 |
|
||||
| jxl | 両方 | JPEG XL、次世代形式 |
|
||||
| bmp | 可逆 | 非圧縮ビットマップ |
|
||||
| ico | 可逆 | Windowsアイコン形式 |
|
||||
| jp2 | 非可逆 | JPEG 2000 |
|
||||
| qoi | 可逆 | Quite OK Image形式 |
|
||||
| psd | レイヤー | Adobe Photoshop(ImageMagickが必要) |
|
||||
| ppm | 可逆 | Portable Pixmap(PPM/PGM/PBM) |
|
||||
| eps | ベクター | Encapsulated PostScript |
|
||||
| tga | 可逆 | Targa画像形式 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
WebPに変換:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/convert \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"format": "webp", "quality": 85}'
|
||||
```
|
||||
|
||||
PNG(可逆)に変換:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/convert \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"format": "png"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.webp",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 680000
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- 出力ファイル名の拡張子は目標形式に合わせて自動で更新されます。
|
||||
- SVGの入力は変換前に300 DPIでラスタライズされます。
|
||||
- PSD変換にはサーバーにImageMagickがインストールされている必要があります。
|
||||
- BMP、EPS、ICO、JP2、JXL、PPM、QOI、TGA は専用のCLIエンコーダーを使用し、Sharpの処理をバイパスします。
|
||||
- HEIC/HEIF のエンコードはシステムのHEICエンコーダーライブラリを使用します。
|
||||
- 入力形式は幅広く、JPEG、PNG、WebP、AVIF、TIFF、GIF、HEIC、RAW(CR2、NEF、ARW など)、PSD、SVG、BMP などに対応します。
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "位置と寸法で領域を指定して画像を切り抜きます。"
|
||||
i18n_source_hash: aab38ccd7c53
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fd35830e0f75
|
||||
---
|
||||
|
||||
# 切り抜き {#crop}
|
||||
|
||||
位置とサイズで矩形領域を定義して画像を切り抜きます。ピクセルとパーセンテージの両方の単位に対応します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/crop`
|
||||
|
||||
画像ファイルとJSONの `settings` フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| left | number | はい | - | 切り抜き領域のXオフセット(左端から) |
|
||||
| top | number | はい | - | 切り抜き領域のYオフセット(上端から) |
|
||||
| width | number | はい | - | 切り抜き領域の幅 |
|
||||
| height | number | はい | - | 切り抜き領域の高さ |
|
||||
| unit | string | いいえ | `"px"` | 値の単位: `px` または `percent` |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/crop \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"left": 100, "top": 50, "width": 800, "height": 600}'
|
||||
```
|
||||
|
||||
パーセンテージ値を使った切り抜き:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/crop \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"left": 10, "top": 10, "width": 80, "height": 80, "unit": "percent"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 1200000
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- 切り抜き領域は画像の境界内に収まる必要があります。領域が画像を越える場合、リクエストは失敗します。
|
||||
- `percent` 単位を使う場合、値は画像の寸法に対するパーセンテージを表します(例: `left: 10` は左端から10%を意味します)。
|
||||
- 出力形式は入力形式に一致します。
|
||||
- 切り抜き前にEXIFの向きが自動適用されるため、座標は視覚的に正しい向きに対応します。
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "カスタムのシャドウ色とハイライト色による2色のデュオトーン効果を適用します。"
|
||||
i18n_source_hash: ab99c4f0152c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b0ff7676e5de
|
||||
---
|
||||
|
||||
# デュオトーン {#duotone}
|
||||
|
||||
画像に2色のデュオトーン効果を適用します。画像はグレースケールに変換され、シャドウ色(暗いトーン)とハイライト色(明るいトーン)の間のグラデーションにマッピングされます。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/duotone`
|
||||
|
||||
画像ファイルとJSONの `settings` フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| shadow | string | いいえ | `"#1e3a8a"` | シャドウの16進数カラー(暗いトーンに適用) |
|
||||
| highlight | string | いいえ | `"#fbbf24"` | ハイライトの16進数カラー(明るいトーンに適用) |
|
||||
| intensity | integer | いいえ | `100` | 効果の強度(0〜100)。0は元の画像を返し、100はデュオトーンをフルに適用します |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/duotone \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"shadow": "#0f172a", "highlight": "#f97316", "intensity": 80}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 1870000
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- 出力形式は入力形式に一致します。HEIC、RAW、PSD、SVG の入力は処理前に自動でデコードされます。
|
||||
- `intensity` が100未満の場合、デュオトーン結果を元の画像とブレンドし、より控えめな効果を得られます。
|
||||
- 人気のデュオトーンの組み合わせには、ネイビー/ゴールド、ティール/コーラル、パープル/ピンクがあります。
|
||||
@@ -0,0 +1,108 @@
|
||||
---
|
||||
description: "ピクセルを再エンコードせずに、画像のEXIF、IPTC、GPS、XMP メタデータフィールドを編集します。"
|
||||
i18n_source_hash: a37746db11c3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cc4a554a90d8
|
||||
---
|
||||
|
||||
# メタデータ編集 {#edit-metadata}
|
||||
|
||||
EXIF、IPTC、GPS座標、日付、キーワードを含む画像メタデータフィールドを編集します。内部でExifToolを使用するため、メタデータはピクセルを再エンコードせずにその場で書き込まれ、画像品質が完全に保持されます。
|
||||
|
||||
## API エンドポイント {#api-endpoints}
|
||||
|
||||
### メタデータ編集 {#edit-metadata-1}
|
||||
|
||||
`POST /api/v1/tools/image/edit-metadata`
|
||||
|
||||
メタデータフィールドを画像に書き込み、変更されたファイルを返します。
|
||||
|
||||
### メタデータ検査 {#inspect-metadata}
|
||||
|
||||
`POST /api/v1/tools/image/edit-metadata/inspect`
|
||||
|
||||
ExifTool経由で画像の全メタデータをJSONとして返します。画像は変更しません。
|
||||
|
||||
## パラメータ(編集) {#parameters-edit}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| title | string | いいえ | - | 画像タイトル(XMP/EXIF) |
|
||||
| author | string | いいえ | - | 作成者名 |
|
||||
| artist | string | いいえ | - | アーティスト名(EXIF Artistタグ) |
|
||||
| copyright | string | いいえ | - | 著作権表示 |
|
||||
| imageDescription | string | いいえ | - | 画像の説明(EXIF) |
|
||||
| software | string | いいえ | - | ソフトウェアタグ |
|
||||
| dateTime | string | いいえ | - | EXIF DateTime値 |
|
||||
| dateTimeOriginal | string | いいえ | - | EXIF DateTimeOriginal値 |
|
||||
| setAllDates | string | いいえ | - | すべての日付フィールドを一度に設定 |
|
||||
| dateShift | string | いいえ | - | すべての日付をオフセット分ずらす(形式: `+HH:MM` または `-HH:MM`) |
|
||||
| clearGps | boolean | いいえ | `false` | すべてのGPSデータを削除 |
|
||||
| gpsLatitude | number | いいえ | - | GPS緯度を設定(-90〜90) |
|
||||
| gpsLongitude | number | いいえ | - | GPS経度を設定(-180〜180) |
|
||||
| gpsAltitude | number | いいえ | - | GPS高度をメートル単位で設定 |
|
||||
| keywords | string[] | いいえ | - | 追加または設定するキーワード/タグ |
|
||||
| keywordsMode | string | いいえ | `"add"` | キーワードの扱い方: `add`(追加)または `set`(置換) |
|
||||
| fieldsToRemove | string[] | いいえ | `[]` | 削除する特定のメタデータフィールド名のリスト |
|
||||
| iptcTitle | string | いいえ | - | IPTC Object Name |
|
||||
| iptcHeadline | string | いいえ | - | IPTC Headline |
|
||||
| iptcCity | string | いいえ | - | IPTC City |
|
||||
| iptcState | string | いいえ | - | IPTC Province/State |
|
||||
| iptcCountry | string | いいえ | - | IPTC Country |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
作成者と著作権を設定:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"author": "Jane Smith", "copyright": "2024 Jane Smith"}'
|
||||
```
|
||||
|
||||
GPS座標を設定:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"gpsLatitude": 48.8566, "gpsLongitude": 2.3522, "gpsAltitude": 35}'
|
||||
```
|
||||
|
||||
GPSを削除してキーワードを追加:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"clearGps": true, "keywords": ["landscape", "sunset"], "keywordsMode": "add"}'
|
||||
```
|
||||
|
||||
メタデータを検査:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata/inspect \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg"
|
||||
```
|
||||
|
||||
## レスポンス例(編集) {#example-response-edit}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2452000
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- このツールはサーバーにExifToolがインストールされている必要があります。Dockerイメージには含まれています。
|
||||
- メタデータはその場で書き込まれるため、ピクセルの再エンコードは発生しません。ファイルサイズの変化は最小限です(メタデータのバイト分のみ)。
|
||||
- `dateShift` パラメータはすべての日付フィールドを指定したオフセット分ずらします。タイムゾーンエラーの修正に便利です(例: `+02:00` または `-05:30`)。
|
||||
- 変更が要求されない場合(すべてのパラメータが省略または空)、元のファイルが変更されずに返されます。
|
||||
- 対応形式: JPEG、PNG、WebP、AVIF、TIFF、GIF、HEIC/HEIF。
|
||||
- ブラウザでプレビューできない形式(HEIF、TIFF)の場合、レスポンスにはWebPプレビューを含む `previewUrl` フィールドが含まれます。
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
description: "GFPGAN と CodeFormer のAIモデルで、画像内のぼやけた低品質な顔を復元・シャープ化します。"
|
||||
i18n_source_hash: 7f9f6af8ebda
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ce5c9ffb5210
|
||||
---
|
||||
|
||||
# 顔の高画質化 {#face-enhancement}
|
||||
|
||||
AIモデル(GFPGAN/CodeFormer)を使って画像内の顔を復元・強調します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/enhance-faces`
|
||||
|
||||
**処理:** 非同期(202を返し、SSE経由でステータスを取得するには `/api/v1/jobs/{jobId}/progress` をポーリング)
|
||||
|
||||
**モデルバンドル:** `upscale-enhance`(5〜6 GB)および `face-detection`(200〜300 MB)
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | はい | - | 画像ファイル(multipart) |
|
||||
| model | string | いいえ | `"auto"` | 使用するモデル: `auto`、`gfpgan`、`codeformer` |
|
||||
| strength | number | いいえ | `0.8` | 強調の強さ(0〜1)。値が高いほど強い強調になります |
|
||||
| onlyCenterFace | boolean | いいえ | `false` | 最も中央にある/目立つ顔のみを強調 |
|
||||
| sensitivity | number | いいえ | `0.5` | 顔検出の感度(0〜1) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/enhance-faces \
|
||||
-F "file=@portrait.jpg" \
|
||||
-F 'settings={"model":"codeformer","strength":0.7,"onlyCenterFace":false}'
|
||||
```
|
||||
|
||||
## レスポンス {#response}
|
||||
|
||||
### 初回レスポンス(202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(`/api/v1/jobs/{jobId}/progress` でのSSE) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Enhancing faces...","percent":60}
|
||||
```
|
||||
|
||||
### 最終結果(SSE経由) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/portrait_enhanced.png",
|
||||
"previewUrl": "/api/v1/download/{jobId}/preview.webp",
|
||||
"originalSize": 350000,
|
||||
"processedSize": 600000,
|
||||
"facesDetected": 2,
|
||||
"faces": [
|
||||
{"x": 120, "y": 80, "w": 100, "h": 100},
|
||||
{"x": 350, "y": 90, "w": 95, "h": 95}
|
||||
],
|
||||
"model": "codeformer"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- `upscale-enhance` モデルバンドル(5〜6 GB)と `face-detection` モデルバンドル(200〜300 MB)の両方が必要です。
|
||||
- GFPGANはより積極的な強調を生成し、CodeFormerは本人らしさをより保持します。`auto` は入力に最適なモデルを選択します。
|
||||
- 出力は最大品質のため常にPNG形式です。
|
||||
- フロントエンドの表示を高速化するため、フル解像度の出力と併せてWebPプレビューが生成されます。
|
||||
- `strength` パラメータは強調された顔を元の画像とブレンドします。控えめな改善には低い値(0.3〜0.5)を、より強い復元には高い値(0.7〜1.0)を使用します。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力形式に自動デコードで対応します。
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
description: "消去したい領域のマスクに従い、AIインペインティング(LaMa)で画像から不要なオブジェクトを削除します。"
|
||||
i18n_source_hash: 8e2e42a5e4f9
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c8fd8664cb28
|
||||
---
|
||||
|
||||
# オブジェクト消去 {#object-eraser}
|
||||
|
||||
AIインペインティング(LaMaモデル)を使って画像から不要なオブジェクトを削除します。画像と、消去する領域を示すマスクを受け付けます。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/erase-object`
|
||||
|
||||
**処理:** 非同期(202を返し、SSE経由でステータスを取得するには `/api/v1/jobs/{jobId}/progress` をポーリング)
|
||||
|
||||
**モデルバンドル:** `object-eraser-colorize`(1〜2 GB)
|
||||
|
||||
## パラメータ {#parameters}
|
||||
|
||||
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | はい | - | ソース画像ファイル(multipart) |
|
||||
| mask | file | はい | - | マスク画像(白 = 消去する領域、黒 = 保持)。フィールド名 `mask` でアップロードする必要があります |
|
||||
| format | string | いいえ | `"auto"` | 出力形式: `auto`、`png`、`jpg`、`jpeg`、`webp`、`tiff`、`gif`、`avif`、`heic`、`heif`、`jxl` |
|
||||
| quality | integer | いいえ | `95` | 出力品質(1〜100) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/erase-object \
|
||||
-F "file=@photo.jpg" \
|
||||
-F "mask=@mask.png" \
|
||||
-F "format=png" \
|
||||
-F "quality=95"
|
||||
```
|
||||
|
||||
## レスポンス {#response}
|
||||
|
||||
### 初回レスポンス(202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(`/api/v1/jobs/{jobId}/progress` でのSSE) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Inpainting...","percent":70}
|
||||
```
|
||||
|
||||
### 最終結果(SSE経由) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/photo_erased.png",
|
||||
"previewUrl": "/api/v1/download/{jobId}/preview.webp",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 230000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 補足 {#notes}
|
||||
|
||||
- `object-eraser-colorize` モデルバンドル(1〜2 GB)のインストールが必要です。
|
||||
- マスクはソース画像と同じ寸法でなければなりません。白いピクセルは消去する領域を示し、AIがそれらをもっともらしい内容で埋めます。
|
||||
- 高品質なオブジェクト削除にLaMa(Large Mask Inpainting)を使用します。
|
||||
- ブラウザでプレビューできない出力形式の場合、メイン出力と併せてWebPプレビューが生成されます。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力形式に自動デコードで対応します。
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
description: "ソース画像から標準的なファビコンとアプリアイコンのすべてのサイズを生成します。"
|
||||
i18n_source_hash: 3a6451a94b7a
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 86a3fc706791
|
||||
---
|
||||
|
||||
# ファビコンジェネレーター {#favicon-generator}
|
||||
|
||||
ソース画像からファビコンとアプリアイコンファイルの完全なセットを生成します。ブラウザ、Apple デバイス、Android に必要なすべての標準サイズを、Web マニフェストと HTML スニペットとともに生成します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/favicon`
|
||||
|
||||
1 つ以上の画像ファイルとオプションの JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| background | string | いいえ | - | 背景の 16 進カラー(例: `"#ffffff"`)。設定すると、アイコンはこの色に対してフラット化されます。 |
|
||||
| padding | integer | いいえ | `0` | アイコンコンテンツの周囲のパディング率(0 から 40) |
|
||||
| radius | integer | いいえ | `0` | 角丸アイコンの角の半径率(0 から 50) |
|
||||
| sizes | integer[] | いいえ | - | 特定のピクセルサイズに出力を制限します(例: `[16, 32, 180]`)。すべての標準サイズを生成するには省略します。 |
|
||||
| themeColor | string | いいえ | `"#ffffff"` | Web マニフェスト用のテーマカラー(16 進) |
|
||||
|
||||
## 生成されるファイル {#generated-files}
|
||||
|
||||
各入力画像に対して、以下のファイルが生成されます:
|
||||
|
||||
| ファイル | サイズ | 用途 |
|
||||
|------|------|---------|
|
||||
| `favicon-16x16.png` | 16x16 | ブラウザタブアイコン |
|
||||
| `favicon-32x32.png` | 32x32 | ブラウザタブアイコン(HiDPI) |
|
||||
| `favicon-48x48.png` | 48x48 | デスクトップショートカット |
|
||||
| `apple-touch-icon.png` | 180x180 | iOS ホーム画面 |
|
||||
| `android-chrome-192x192.png` | 192x192 | Android ホーム画面 |
|
||||
| `android-chrome-512x512.png` | 512x512 | Android スプラッシュ画面 |
|
||||
| `favicon.ico` | 32x32 | レガシー ICO 形式 |
|
||||
| `manifest.json` | - | アイコン参照を含む Web アプリマニフェスト |
|
||||
| `favicon-snippet.html` | - | すぐに使える HTML link タグ |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
角丸とパディングを適用した単一ソース画像:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/favicon \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@logo.png" \
|
||||
-F 'settings={"padding": 10, "radius": 20, "themeColor": "#0a0a0a"}'
|
||||
```
|
||||
|
||||
複数のソース画像(それぞれがサブフォルダに独自のセットを取得します):
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/favicon \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@logo-light.png" \
|
||||
-F "file=@logo-dark.png"
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
レスポンスは直接ストリーミングされる ZIP ファイルです。レスポンスヘッダーは以下のとおりです:
|
||||
|
||||
```
|
||||
Content-Type: application/zip
|
||||
Content-Disposition: attachment; filename="favicons-a1b2c3d4.zip"
|
||||
```
|
||||
|
||||
## 同梱される HTML スニペット {#html-snippet-included}
|
||||
|
||||
ZIP には、HTML の `<head>` に貼り付けられる `favicon-snippet.html` ファイルが含まれています:
|
||||
|
||||
```html
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- ソース画像は `cover` フィットモードでリサイズされます。つまり、各正方形サイズを埋めるようにトリミングされます。最良の結果を得るには、正方形のソース画像を使用してください。
|
||||
- 複数のファイルがアップロードされた場合、それぞれが ZIP 内に独自のサブフォルダを取得します(ソースファイルにちなんで命名されます)。
|
||||
- 単一ファイルのアップロードでは、すべての出力がサブフォルダなしで ZIP のルートに配置されます。
|
||||
- 検証やデコードに失敗したファイルはスキップされ、問題を説明する `skipped-files.txt` が ZIP に含まれます。
|
||||
- 対応する入力形式: JPEG、PNG、WebP、AVIF、TIFF、GIF、HEIC、SVG、RAW、PSD など。
|
||||
- リサイズ前に EXIF の向きが自動的に適用されます。
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
description: "知覚ハッシュを使用して重複画像および類似画像を検出します。"
|
||||
i18n_source_hash: 4e1f4413f90f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e3471d471961
|
||||
---
|
||||
|
||||
# 重複を検索 {#find-duplicates}
|
||||
|
||||
複数の画像をアップロードし、知覚ハッシュ(dHash)を使用して重複および類似の画像を検出します。類似画像をグループにまとめ、各グループ内の最高品質バージョンを特定し、削減可能な容量を計算します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/find-duplicates`
|
||||
|
||||
複数の画像ファイルとオプションの JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| threshold | number | いいえ | `8` | 画像を重複とみなす最大ハミング距離(0 から 20)。低いほど厳密なマッチング |
|
||||
|
||||
### ファイルフィールド {#file-fields}
|
||||
|
||||
multipart リクエストで少なくとも 2 つの画像ファイルをアップロードします(すべて `file` フィールド名を使用するか、ファイルパートには任意のフィールド名を使用します)。
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/find-duplicates \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo1.jpg" \
|
||||
-F "file=@photo2.jpg" \
|
||||
-F "file=@photo3.jpg" \
|
||||
-F "file=@photo4.jpg" \
|
||||
-F 'settings={"threshold": 8}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"totalImages": 4,
|
||||
"duplicateGroups": [
|
||||
{
|
||||
"groupId": 1,
|
||||
"files": [
|
||||
{
|
||||
"filename": "photo1.jpg",
|
||||
"similarity": 100,
|
||||
"width": 4032,
|
||||
"height": 3024,
|
||||
"fileSize": 2450000,
|
||||
"format": "jpeg",
|
||||
"isBest": true,
|
||||
"thumbnail": "data:image/jpeg;base64,/9j/..."
|
||||
},
|
||||
{
|
||||
"filename": "photo2.jpg",
|
||||
"similarity": 96.88,
|
||||
"width": 1920,
|
||||
"height": 1440,
|
||||
"fileSize": 850000,
|
||||
"format": "jpeg",
|
||||
"isBest": false,
|
||||
"thumbnail": "data:image/jpeg;base64,/9j/..."
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"uniqueImages": 2,
|
||||
"spaceSaveable": 850000,
|
||||
"skippedFiles": []
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンスフィールド {#response-fields}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| totalImages | number | 正常に分析された画像の数 |
|
||||
| duplicateGroups | array | 重複画像のグループ |
|
||||
| uniqueImages | number | どの重複グループにも属さない画像の数 |
|
||||
| spaceSaveable | number | 最良でない重複を削除することで節約できる総バイト数 |
|
||||
| skippedFiles | array | 処理できなかったファイル(ファイル名と理由を含む) |
|
||||
|
||||
### 重複グループオブジェクト {#duplicate-group-object}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| groupId | number | グループ識別子 |
|
||||
| files | array | この重複グループ内の画像 |
|
||||
|
||||
### ファイルオブジェクト(グループ内) {#file-object-within-a-group}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| filename | string | 元のファイル名 |
|
||||
| similarity | number | 参照画像(グループの先頭)に対する類似度のパーセンテージ |
|
||||
| width | number | 画像の幅(ピクセル) |
|
||||
| height | number | 画像の高さ(ピクセル) |
|
||||
| fileSize | number | ファイルサイズ(バイト) |
|
||||
| format | string | 画像形式 |
|
||||
| isBest | boolean | これが最高品質バージョン(最もピクセルが多く、ファイルが最大)かどうか |
|
||||
| thumbnail | string または null | プレビュー用の Base64 JPEG サムネイル(幅 200px) |
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- 知覚的類似性検出には 128 ビットの dHash(64 ビットの行 + 64 ビットの列)を使用します。これにより、リサイズ、再圧縮、軽微な編集をまたいでも重複を検出できます。
|
||||
- しきい値はハッシュ間の最大ハミング距離を表します。デフォルトの 8 は誤検出を避けつつ類似画像を検出します。ピクセル完全一致のみには 0 を、非常に緩いマッチングには 15〜20 を使用します。
|
||||
- 各グループの「最良」画像は、最もピクセルが多い(幅 x 高さ)ものであり、同点の場合はファイルサイズで判定されます。
|
||||
- 少なくとも 2 枚の画像が必要です。検証やデコードに失敗したファイルは、リクエスト全体を失敗させるのではなく `skippedFiles` に報告されます。
|
||||
- サムネイルはデータ URI としてエンコードされた幅 200px の JPEG プレビューです。
|
||||
- すべての一般的な形式に対応しています(HEIC、RAW、PSD、SVG は自動的にデコードされます)。
|
||||
@@ -0,0 +1,147 @@
|
||||
---
|
||||
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` フィールドは、アニメーション全体の再生時間(ミリ秒)です。
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "すべてのフレームを保持したまま、アニメーション GIF を WebP に、またはその逆に変換します。"
|
||||
i18n_source_hash: 20946e5001cb
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f7265fbe0c09
|
||||
---
|
||||
|
||||
# GIF/WebP コンバーター {#gif-webp-converter}
|
||||
|
||||
すべてのフレームとアニメーションのタイミングを保持したまま、アニメーション GIF ファイルを WebP に、またはその逆に変換します。WebP アニメーションは、同等の GIF よりも通常 25〜35% 小さくなります。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/gif-webp`
|
||||
|
||||
GIF または WebP ファイルと JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | integer | いいえ | `80` | WebP エンコードの出力品質(1〜100) |
|
||||
| lossless | boolean | いいえ | `false` | ロスレス WebP 圧縮を使用 |
|
||||
| resizePercent | integer | いいえ | `100` | 出力をパーセンテージでスケール(10〜100) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/gif-webp \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@animation.gif" \
|
||||
-F 'settings={"quality": 85, "resizePercent": 50}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.webp",
|
||||
"originalSize": 3500000,
|
||||
"processedSize": 2200000
|
||||
}
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- `.gif` と `.webp` ファイルのみが受け付けられます。他の画像形式はこのツールではサポートされていません。
|
||||
- 変換方向は自動です: GIF 入力は WebP 出力を生成し、WebP 入力は GIF 出力を生成します。
|
||||
- `quality` と `lossless` オプションは、WebP へのエンコード時にのみ適用されます。GIF への変換時は、出力は標準の GIF パレットを使用します。
|
||||
- 大きなアニメーションの寸法(およびファイルサイズ)を縮小するには `resizePercent` を使用します。
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
description: "画像からチャンネルごとの統計を含む RGB ヒストグラムチャートを生成します。"
|
||||
i18n_source_hash: 57aa610206a5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 442857dea9f1
|
||||
---
|
||||
|
||||
# ヒストグラム {#histogram}
|
||||
|
||||
画像から RGB ヒストグラムチャートを生成します。PNG ヒストグラム画像を、チャンネルごとの統計と生の 256 ビンヒストグラムデータとともにレスポンス JSON で返します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/histogram`
|
||||
|
||||
画像ファイルと JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| scale | string | いいえ | `"linear"` | Y 軸のスケール: `linear` または `log` |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/histogram \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"scale": "linear"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/histogram.png",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 12000,
|
||||
"bins": {
|
||||
"r": [0, 12, 45, "... (256 values)"],
|
||||
"g": [0, 8, 38, "... (256 values)"],
|
||||
"b": [2, 15, 52, "... (256 values)"],
|
||||
"lum": [0, 10, 40, "... (256 values)"]
|
||||
},
|
||||
"stats": {
|
||||
"r": { "mean": 128, "median": 132, "stdev": 48.5 },
|
||||
"g": { "mean": 119, "median": 121, "stdev": 44.2 },
|
||||
"b": { "mean": 105, "median": 108, "stdev": 51.3 },
|
||||
"lum": { "mean": 118, "median": 120, "stdev": 45.1 }
|
||||
},
|
||||
"mean": { "r": 128, "g": 119, "b": 105 },
|
||||
"max": { "r": 4200, "g": 3800, "b": 4100 }
|
||||
}
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- `downloadUrl` は、R、G、B、および輝度の分布を示すレンダリング済みの PNG ヒストグラムチャートを指します。
|
||||
- `bins` には、各チャンネル(赤、緑、青、輝度)の生の 256 値配列が含まれており、カスタムビジュアライゼーションのレンダリングに適しています。
|
||||
- `stats` は、チャンネルごとの平均値、中央値、標準偏差を提供します。
|
||||
- `mean` と `max` は、後方互換性のための省略フィールドです。
|
||||
- ヒストグラムがいくつかのピークに支配されていて、下位ビンの詳細を見たい場合は `log` スケールを使用します。
|
||||
- HEIC、RAW、PSD、SVG 入力は、分析前に自動的にデコードされます。
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
description: "Web ページや HTML スニペットを、デバイスエミュレーションを使用して高品質の画像としてキャプチャします。"
|
||||
i18n_source_hash: 1e49d070ea2e
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: df5d130bb1ff
|
||||
---
|
||||
|
||||
# HTML から画像 {#html-to-image}
|
||||
|
||||
Web ページの URL または生の HTML コンテンツをスクリーンショット画像としてキャプチャします。デバイスエミュレーション(デスクトップ、タブレット、モバイル)、ページ全体のキャプチャ、複数の出力形式に対応しています。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/html-to-image`
|
||||
|
||||
**JSON ボディ**(multipart ではない)を受け付けます。ファイルのアップロードは不要です。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| url | string | 条件付き | - | キャプチャする URL(有効な URL である必要があります) |
|
||||
| html | string | 条件付き | - | レンダリングする生の HTML コンテンツ(1 から 5,000,000 文字) |
|
||||
| format | string | いいえ | `"png"` | 出力形式: `jpg`、`png`、`webp` |
|
||||
| quality | number | いいえ | `90` | 非可逆形式の出力品質(1 から 100) |
|
||||
| fullPage | boolean | いいえ | `false` | ビューポートだけでなく、スクロール可能なページ全体をキャプチャ |
|
||||
| devicePreset | string | いいえ | `"desktop"` | デバイスエミュレーション: `desktop`、`tablet`、`mobile`、`custom` |
|
||||
| viewportWidth | number | いいえ | `1280` | カスタムビューポートの幅(ピクセル、320 から 3840、devicePreset が `custom` の場合に使用) |
|
||||
| viewportHeight | number | いいえ | `720` | カスタムビューポートの高さ(ピクセル、320 から 2160、devicePreset が `custom` の場合に使用) |
|
||||
|
||||
`url` または `html` のいずれかを指定する必要がありますが、両方を指定することはできません。
|
||||
|
||||
### デバイスプリセット {#device-presets}
|
||||
|
||||
| プリセット | 幅 | 高さ | モバイル UA |
|
||||
|--------|-------|--------|-----------|
|
||||
| `desktop` | 1280 | 720 | いいえ |
|
||||
| `tablet` | 768 | 1024 | いいえ |
|
||||
| `mobile` | 375 | 812 | はい |
|
||||
| `custom` | (ユーザー指定) | (ユーザー指定) | いいえ |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
Web ページをキャプチャ:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"url": "https://example.com", "format": "png", "fullPage": true, "devicePreset": "desktop"}'
|
||||
```
|
||||
|
||||
HTML コンテンツをレンダリング:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"html": "<div style=\"padding: 20px; background: #f0f0f0;\"><h1>Hello</h1></div>", "format": "png"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/screenshot.png",
|
||||
"originalSize": 0,
|
||||
"processedSize": 145000
|
||||
}
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- サーバーに Chromium がインストールされている必要があります。ブラウザサービスが利用できない場合は HTTP 503 を返します。
|
||||
- URL は SSRF 攻撃に対して検証されます(プライベート/内部ネットワークアドレスはブロックされます)。
|
||||
- このエンドポイントは 1 時間あたり 120 リクエストにレート制限されています。
|
||||
- このツールは URL/HTML から画像を生成するため、`originalSize` は常に 0 です。
|
||||
- 出力ファイル名は `screenshot.<format>` です。
|
||||
- ページの読み込みに時間がかかりすぎる場合、リクエストは HTTP 504(ゲートウェイタイムアウト)を返します。
|
||||
- ブラウザサービスが繰り返しクラッシュする場合、一時的に無効化され、コード `BROWSER_CRASHED` とともに HTTP 503 を返します。
|
||||
@@ -0,0 +1,99 @@
|
||||
---
|
||||
description: "画像を分析し、露出、コントラスト、ホワイトバランス、彩度、シャープネスを補正するワンクリック自動補正。"
|
||||
i18n_source_hash: 42b6ab956f91
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 77f7a77601f0
|
||||
---
|
||||
|
||||
# 画像エンハンスメント {#image-enhancement}
|
||||
|
||||
スマート分析によるワンクリック自動改善。画像を分析し、露出、コントラスト、ホワイトバランス、彩度、シャープネス、ノイズ除去の補正を適用します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/image-enhancement`
|
||||
|
||||
**処理:** 同期(`createToolRoute` ファクトリを使用し、結果を直接返します)
|
||||
|
||||
**モデルバンドル:** 基本的なエンハンスメントには不要です。`upscale-enhance` バンドル(5〜6 GB)は、`deepEnhance` が有効な場合(SCUNet による AI ノイズ除去用)にのみ使用されます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | はい | - | 画像ファイル(multipart) |
|
||||
| mode | string | いいえ | `"auto"` | エンハンスメントモード: `auto`、`portrait`、`landscape`、`low-light`、`food`、`document` |
|
||||
| intensity | number | いいえ | `50` | 全体的なエンハンスメントの強度(0〜100) |
|
||||
| corrections | object | いいえ | すべて `true` | 適用する選択的補正(下記参照) |
|
||||
| deepEnhance | boolean | いいえ | `false` | AI 駆動のノイズ除去を有効化(`noise-removal` ツールのインストールが必要) |
|
||||
|
||||
### Corrections オブジェクト {#corrections-object}
|
||||
|
||||
| フィールド | 型 | デフォルト | 説明 |
|
||||
|-------|------|---------|-------------|
|
||||
| exposure | boolean | `true` | 露出を自動補正 |
|
||||
| contrast | boolean | `true` | コントラストを自動補正 |
|
||||
| whiteBalance | boolean | `true` | ホワイトバランスを自動補正 |
|
||||
| saturation | boolean | `true` | 彩度を自動補正 |
|
||||
| sharpness | boolean | `true` | 自動シャープ化 |
|
||||
| denoise | boolean | `true` | 軽度のノイズ除去 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-enhancement \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"mode":"portrait","intensity":70,"corrections":{"exposure":true,"contrast":true,"sharpness":false}}'
|
||||
```
|
||||
|
||||
## レスポンス(200 OK) {#response-200-ok}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/photo.jpg",
|
||||
"originalSize": 300000,
|
||||
"processedSize": 310000
|
||||
}
|
||||
```
|
||||
|
||||
## Analyze エンドポイント {#analyze-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/image-enhancement/analyze`
|
||||
|
||||
画像を分析し、適用せずに補正の推奨事項を返します。
|
||||
|
||||
### パラメーター {#parameters-1}
|
||||
|
||||
| パラメーター | 型 | 必須 | 説明 |
|
||||
|-----------|------|----------|-------------|
|
||||
| file | file | はい | 画像ファイル(multipart) |
|
||||
|
||||
### リクエスト例 {#example-request-1}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-enhancement/analyze \
|
||||
-F "file=@photo.jpg"
|
||||
```
|
||||
|
||||
### レスポンス(200 OK) {#response-200-ok-1}
|
||||
|
||||
```json
|
||||
{
|
||||
"corrections": {
|
||||
"exposure": { "value": 0.3, "direction": "brighten" },
|
||||
"contrast": { "value": 0.2, "direction": "increase" },
|
||||
"whiteBalance": { "value": 200, "direction": "warmer" },
|
||||
"saturation": { "value": 0.1, "direction": "increase" },
|
||||
"sharpness": { "value": 0.4, "direction": "sharpen" }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- このツールは同期の `createToolRoute` ファクトリを使用するため、標準のレスポンスを返します(202 非同期ではありません)。
|
||||
- `mode` パラメーターは、補正の重み付けを調整します(例: ポートレートモードは肌のトーンに対してより穏やかに、ランドスケープモードは彩度を高めます)。
|
||||
- `deepEnhance` が有効で、`noise-removal` ツール(SCUNet)がインストールされている場合、標準の補正後に追加の AI ノイズ除去パスが適用されます。
|
||||
- analyze エンドポイントは、コミットする前にどの補正が適用されるかをプレビューするのに便利です。
|
||||
- 自動デコードにより、HEIC/HEIF、RAW、TGA、PSD、EXR、HDR 入力形式に対応しています。
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "単色、透明、またはぼかし背景で、画像を目標のアスペクト比までパディングします。"
|
||||
i18n_source_hash: 796122da3dae
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a2f14a3c006b
|
||||
---
|
||||
|
||||
# 画像パディング {#image-pad}
|
||||
|
||||
画像の周囲に単色、透明、またはぼかし背景を追加することで、目標のアスペクト比までパディングします。トリミングせずに、ソーシャルメディアや印刷用の固定アスペクト比に画像を収めるのに便利です。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/image-pad`
|
||||
|
||||
画像ファイルと JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | いいえ | `"1:1"` | 目標のアスペクト比: `16:9`、`9:16`、`1:1`、`4:3`、`3:4`、または `custom` |
|
||||
| ratioW | integer | いいえ | `1` | カスタム比率の幅(1〜100、target が `custom` の場合に使用) |
|
||||
| ratioH | integer | いいえ | `1` | カスタム比率の高さ(1〜100、target が `custom` の場合に使用) |
|
||||
| background | string | いいえ | `"color"` | 背景モード: `color`、`transparent`、または `blur` |
|
||||
| color | string | いいえ | `"#ffffff"` | 背景の 16 進カラー(background が `color` の場合) |
|
||||
| padding | integer | いいえ | `0` | キャンバスに対するパーセンテージでの追加パディング(0〜50) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-pad \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"target": "16:9", "background": "blur", "padding": 5}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 3100000
|
||||
}
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- `blur` 背景モードは、元画像のぼかしコピーをパディングの塗りつぶしとして作成し、視覚的にまとまりのある結果を生成します。
|
||||
- `transparent` 背景を使用する場合、アルファを保持するために出力は PNG に変換されます。
|
||||
- 透明度が関係しない限り、出力形式は入力形式と一致します。HEIC、RAW、PSD、SVG 入力は、処理前に自動的にデコードされます。
|
||||
- 任意のアスペクト比(例: 3:2 の場合は `ratioW: 3, ratioH: 2`)には、`target` を `custom` に設定し、`ratioW` と `ratioH` を指定します。
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
description: "HTML、CSS などに埋め込むために、画像を base64 データ URI に変換します。"
|
||||
i18n_source_hash: ba4b8f3b4ece
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d5ee100c5387
|
||||
---
|
||||
|
||||
# 画像から Base64 {#image-to-base64}
|
||||
|
||||
1 つ以上の画像を base64 エンコードされた文字列およびデータ URI に変換します。オプションの形式変換、品質制御、リサイズに対応しています。HTML、CSS、JSON、またはメールテンプレートに画像を直接埋め込むのに便利です。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/image-to-base64`
|
||||
|
||||
1 つ以上の画像ファイルとオプションの JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| outputFormat | string | いいえ | `"original"` | エンコード前に変換: `original`、`jpeg`、`png`、`webp`、`avif`、`jxl` |
|
||||
| quality | number | いいえ | `80` | 非可逆形式の出力品質(1 から 100) |
|
||||
| maxWidth | number | いいえ | `0` | 最大幅(ピクセル、0 = リサイズなし、拡大はしません) |
|
||||
| maxHeight | number | いいえ | `0` | 最大高さ(ピクセル、0 = リサイズなし、拡大はしません) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-to-base64 \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@icon.png" \
|
||||
-F 'settings={"outputFormat": "webp", "quality": 80, "maxWidth": 200}'
|
||||
```
|
||||
|
||||
複数ファイル:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-to-base64 \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@icon1.png" \
|
||||
-F "file=@icon2.png" \
|
||||
-F "file=@icon3.png" \
|
||||
-F 'settings={"outputFormat": "original"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"results": [
|
||||
{
|
||||
"filename": "icon.png",
|
||||
"mimeType": "image/webp",
|
||||
"width": 200,
|
||||
"height": 200,
|
||||
"originalSize": 45000,
|
||||
"encodedSize": 28800,
|
||||
"overheadPercent": -36.0,
|
||||
"base64": "UklGRlYAAABXRUJQ...",
|
||||
"dataUri": "data:image/webp;base64,UklGRlYAAABXRUJQ..."
|
||||
}
|
||||
],
|
||||
"errors": []
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンスフィールド {#response-fields}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| results | array | 正常に変換された画像 |
|
||||
| errors | array | 処理に失敗した画像(ファイル名とエラーメッセージを含む) |
|
||||
|
||||
### Result オブジェクト {#result-object}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| filename | string | 元のファイル名 |
|
||||
| mimeType | string | エンコードされた出力の MIME タイプ |
|
||||
| width | number | 最終的な幅(リサイズ後、ピクセル) |
|
||||
| height | number | 最終的な高さ(リサイズ後、ピクセル) |
|
||||
| originalSize | number | 元のファイルサイズ(バイト) |
|
||||
| encodedSize | number | base64 文字列のサイズ(バイト) |
|
||||
| overheadPercent | number | 元と比較したサイズの差のパーセンテージ(正 = 大きい、負 = 小さい) |
|
||||
| base64 | string | 生の base64 エンコードされた画像データ |
|
||||
| dataUri | string | `src` 属性ですぐに使える完全なデータ URI |
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- Base64 エンコードは、通常、バイナリファイルと比較してサイズが約 33% 増加します。`overheadPercent` フィールドは実際の差を示します。
|
||||
- `outputFormat` が `"original"` の場合、HEIC/HEIF ファイルは JPEG に変換されます(ブラウザはデータ URI で HEIC を表示できないため)。
|
||||
- `maxWidth` と `maxHeight` オプションは、`withoutEnlargement` 付きの `fit: inside` を使用してリサイズするため、指定した寸法より小さい画像は拡大されません。
|
||||
- 1 回のリクエストで複数のファイルを処理できます。各ファイルは独立して処理され、失敗しても他のファイルの成功は妨げられません。
|
||||
- SVG ファイルは、再エンコードなしで `image/svg+xml` としてそのまま渡されます(形式変換が要求された場合を除く)。
|
||||
- これは読み取り専用のエンドポイントです。ダウンロード可能なファイルや `jobId` は生成しません。base64 データはレスポンスボディで直接返されます。
|
||||
@@ -0,0 +1,119 @@
|
||||
---
|
||||
description: "ページサイズ、向き、目標ファイルサイズオプションを指定して、1 つ以上の画像を PDF ドキュメントに結合します。"
|
||||
i18n_source_hash: f659c7e7f56b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 535213c32470
|
||||
---
|
||||
|
||||
# 画像から PDF {#image-to-pdf}
|
||||
|
||||
1 つ以上の画像を PDF ドキュメントに結合します。複数のページサイズ、向き、余白、および品質調整によるオプションのファイルサイズ指定に対応しています。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/image-to-pdf`
|
||||
|
||||
1 つ以上の画像ファイルと JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| pageSize | string | いいえ | `"A4"` | ページサイズ: `A4`、`Letter`、`A3`、`A5` |
|
||||
| orientation | string | いいえ | `"portrait"` | ページの向き: `portrait` または `landscape` |
|
||||
| margin | number | いいえ | `20` | ページ余白(ポイント、0〜500) |
|
||||
| targetSize | object | いいえ | - | 目標ファイルサイズの制約(下記参照) |
|
||||
| collate | boolean | いいえ | `true` | すべての画像を 1 つの PDF に結合します。`false` の場合、画像ごとに 1 つの PDF を作成します。 |
|
||||
|
||||
### Target Size オブジェクト {#target-size-object}
|
||||
|
||||
| フィールド | 型 | 必須 | 説明 |
|
||||
|-------|------|----------|-------------|
|
||||
| value | number | はい | 目標サイズの値 |
|
||||
| unit | string | はい | 単位: `KB` または `MB` |
|
||||
|
||||
最小目標サイズは 50 KB です。
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
基本的な複数画像の PDF:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@page1.jpg" \
|
||||
-F "file=@page2.jpg" \
|
||||
-F "file=@page3.jpg" \
|
||||
-F 'settings={"pageSize": "A4", "orientation": "portrait", "margin": 20}'
|
||||
```
|
||||
|
||||
ファイルサイズ目標付き:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@scan1.jpg" \
|
||||
-F "file=@scan2.jpg" \
|
||||
-F 'settings={"pageSize": "Letter", "targetSize": {"value": 2, "unit": "MB"}}'
|
||||
```
|
||||
|
||||
画像ごとに 1 つの PDF:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo1.jpg" \
|
||||
-F "file=@photo2.jpg" \
|
||||
-F 'settings={"collate": false}'
|
||||
```
|
||||
|
||||
## レスポンス例(結合済み) {#example-response-collated}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/images.pdf",
|
||||
"originalSize": 5000000,
|
||||
"processedSize": 1200000,
|
||||
"pages": 3
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンス例(非結合) {#example-response-non-collated}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/images.zip",
|
||||
"originalSize": 5000000,
|
||||
"processedSize": 2400000,
|
||||
"pages": 2,
|
||||
"collated": false
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンス例(目標サイズ付き) {#example-response-with-target-size}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/images.pdf",
|
||||
"originalSize": 10000000,
|
||||
"processedSize": 2000000,
|
||||
"pages": 5,
|
||||
"compression": {
|
||||
"targetRequested": 2097152,
|
||||
"targetMet": true,
|
||||
"jpegQuality": 72
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- 画像はページの中央に配置され、アスペクト比を保持したまま余白内に収まるようにスケールされます。画像が拡大されることはありません。
|
||||
- `collate` が `false` の場合、各画像は個別の PDF ファイルになり、ダウンロードはすべての PDF を含む ZIP アーカイブになります。
|
||||
- 目標サイズ機能は、予算内に収まる最良の品質を見つけるために、JPEG 品質レベル(10〜95)に対する反復的な二分探索を使用します。
|
||||
- 透明な画像は、PDF に埋め込む前に白にフラット化されます。
|
||||
- 対応する入力形式: JPEG、PNG、WebP、AVIF、TIFF、GIF、HEIC、RAW、PSD、SVG など。
|
||||
- 埋め込み前に EXIF の向きが自動的に適用されます。
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
description: "詳細な画像メタデータ、プロパティ、チャンネルごとのヒストグラム統計を表示します。"
|
||||
i18n_source_hash: 8a0f7a0b0153
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c158254ef2ca
|
||||
---
|
||||
|
||||
# 画像情報 {#image-info}
|
||||
|
||||
寸法、形式、色空間、EXIF/ICC/XMP の有無、チャンネルごとのヒストグラム統計を含む包括的な画像メタデータを返す読み取り専用の分析ツールです。処理済みの出力ファイルは生成しません。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/info`
|
||||
|
||||
画像ファイルを含む multipart フォームデータを受け付けます。設定フィールドは不要です。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
このツールには設定可能なパラメーターがありません。画像ファイルをアップロードするだけです。
|
||||
|
||||
| フィールド | 型 | 必須 | 説明 |
|
||||
|-------|------|----------|-------------|
|
||||
| file | file | はい | 分析する画像 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/info \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg"
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"filename": "photo.jpg",
|
||||
"fileSize": 2450000,
|
||||
"width": 4032,
|
||||
"height": 3024,
|
||||
"format": "jpeg",
|
||||
"channels": 3,
|
||||
"hasAlpha": false,
|
||||
"colorSpace": "srgb",
|
||||
"density": 72,
|
||||
"isProgressive": false,
|
||||
"orientation": 1,
|
||||
"hasProfile": true,
|
||||
"hasExif": true,
|
||||
"hasIcc": true,
|
||||
"hasXmp": false,
|
||||
"bitDepth": "8",
|
||||
"pages": 1,
|
||||
"histogram": [
|
||||
{ "channel": "red", "min": 0, "max": 255, "mean": 128.45, "stdev": 52.31 },
|
||||
{ "channel": "green", "min": 2, "max": 253, "mean": 115.22, "stdev": 48.76 },
|
||||
{ "channel": "blue", "min": 0, "max": 250, "mean": 102.89, "stdev": 55.14 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンスフィールド {#response-fields}
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| filename | string | サニタイズされたファイル名 |
|
||||
| fileSize | number | ファイルサイズ(バイト) |
|
||||
| width | number | 画像の幅(ピクセル) |
|
||||
| height | number | 画像の高さ(ピクセル) |
|
||||
| format | string | 検出された形式(jpeg、png、webp など) |
|
||||
| channels | number | 色チャンネルの数 |
|
||||
| hasAlpha | boolean | 画像にアルファチャンネルがあるかどうか |
|
||||
| colorSpace | string | 色空間(srgb、cmyk など) |
|
||||
| density | number または null | DPI/PPI 解像度 |
|
||||
| isProgressive | boolean | JPEG がプログレッシブエンコードを使用しているかどうか |
|
||||
| orientation | number または null | EXIF の向きの値(1〜8) |
|
||||
| hasProfile | boolean | ICC プロファイルが埋め込まれているかどうか |
|
||||
| hasExif | boolean | EXIF メタデータが存在するかどうか |
|
||||
| hasIcc | boolean | ICC カラープロファイルが存在するかどうか |
|
||||
| hasXmp | boolean | XMP メタデータが存在するかどうか |
|
||||
| bitDepth | string または null | サンプルあたりのビット数 |
|
||||
| pages | number | ページ数(TIFF、GIF などの複数ページ形式の場合) |
|
||||
| histogram | array | チャンネルごとの統計(最小値、最大値、平均値、標準偏差) |
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- これは読み取り専用のエンドポイントです。ダウンロード可能な出力ファイルや `jobId` は生成しません。
|
||||
- RAW 形式の画像(DNG、CR2、NEF、ARW など)の場合、Sharp が直接読み取れない真のセンサー寸法とメタデータフラグを抽出するために ExifTool を使用します。
|
||||
- HEIC/HEIF ファイルは、Sharp が HEVC ピクセルをデコードできないため、ピクセル統計を抽出するために内部で PNG にデコードされます。
|
||||
- ヒストグラムは、完全な 256 ビン分布ではなく、チャンネルごとの最小値/最大値/平均値/標準偏差を提供します。
|
||||
- `density` フィールドは、存在する場合、埋め込まれた DPI メタデータを反映します。
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "base64 データ URI を含む、極小の低品質画像プレースホルダーを生成します。"
|
||||
i18n_source_hash: f8a27c8021f5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cf7966b1c20b
|
||||
---
|
||||
|
||||
# LQIP プレースホルダー {#lqip-placeholder}
|
||||
|
||||
ソース画像から極小の低品質画像プレースホルダー(LQIP)を生成します。すぐに埋め込める base64 データ URI、すぐに使える HTML `<img>` タグ、CSS `background-image` スニペットとともに、小さなプレースホルダーファイルを返します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/lqip-placeholder`
|
||||
|
||||
画像ファイルと JSON `settings` フィールドを含む multipart フォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | いいえ | `16` | 目標の幅(ピクセル、4〜64) |
|
||||
| blur | number | いいえ | `2` | ぼかし戦略のぼかし半径(0〜20) |
|
||||
| strategy | string | いいえ | `"blur"` | プレースホルダー戦略: `blur`、`pixelate`、または `solid` |
|
||||
| format | string | いいえ | `"webp"` | 出力形式: `webp`、`png`、または `jpeg` |
|
||||
| quality | integer | いいえ | `50` | 出力品質(1〜100) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/lqip-placeholder \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"width": 20, "strategy": "blur", "format": "webp"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.webp",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 280,
|
||||
"dataUri": "data:image/webp;base64,UklGR...",
|
||||
"width": 20,
|
||||
"height": 13,
|
||||
"bytes": 280,
|
||||
"strategy": "blur",
|
||||
"html": "<img src=\"data:image/webp;base64,UklGR...\" />",
|
||||
"css": "background-image:url('data:image/webp;base64,UklGR...');background-size:cover;background-position:center;"
|
||||
}
|
||||
```
|
||||
|
||||
## 注記 {#notes}
|
||||
|
||||
- `dataUri` フィールドには完全なデータ URI が含まれており、追加のリクエストなしで `src` 属性や CSS ですぐに使用できます。
|
||||
- `html` と `css` フィールドは、一般的なユースケース向けのコピー&ペースト用スニペットを提供します。
|
||||
- `blur` 戦略は、柔らかくぼかしたサムネイルを生成します。`pixelate` 戦略は、ブロック状のモザイクを作成します。`solid` 戦略は、単一の平均色を返します。
|
||||
- 一般的なプレースホルダーサイズは 200〜500 バイトで、HTML に直接インライン化するのに適しています。
|
||||
- 高さは、ソース画像のアスペクト比を保持するように自動的に計算されます。
|
||||
- HEIC、RAW、PSD、SVG 入力は、処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
description: "テンプレートやカスタム画像、スタイル付きテキストボックス、フォントオプションでミームを作成します。"
|
||||
i18n_source_hash: 0a4970112ca6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 52e455e46257
|
||||
---
|
||||
|
||||
# ミームジェネレーター {#meme-generator}
|
||||
|
||||
組み込みテンプレートまたはカスタム画像を使ってミームを作成します。クラシックなミームスタイル(太字、アウトライン付きテキスト)、複数のレイアウトプリセット、フォント選択でテキストを追加できます。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/meme-generator`
|
||||
|
||||
次のいずれかを受け付けます。
|
||||
- 画像ファイルと JSON の `settings` フィールドを含む **マルチパートフォームデータ**(カスタム画像モード)
|
||||
- `templateId` を含む **JSON ボディ**(テンプレートモード、ファイルアップロード不要)
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| templateId | string | No | - | 組み込みミームテンプレート ID。指定した場合、画像のアップロードは不要 |
|
||||
| textLayout | string | No | `"top-bottom"` | テキストボックスのレイアウト: `top-bottom`, `top-only`, `bottom-only`, `center`, `side-by-side` |
|
||||
| textBoxes | array | No | `[]` | `id` と `text` フィールドを持つテキストボックスオブジェクトの配列 |
|
||||
| fontFamily | string | No | `"anton"` | フォント: `anton`, `arial-black`, `comic-sans`, `montserrat`, `bebas-neue`, `permanent-marker`, `roboto` |
|
||||
| fontSize | number | No | auto | フォントサイズ(ピクセル、8~200)。省略時は自動計算 |
|
||||
| textColor | string | No | `"#ffffff"` | テキストの塗りつぶし色 |
|
||||
| strokeColor | string | No | `"#000000"` | テキストの縁取り/アウトライン色 |
|
||||
| textAlign | string | No | `"center"` | テキストの配置: `left`, `center`, `right` |
|
||||
| allCaps | boolean | No | `true` | テキストを大文字に変換 |
|
||||
|
||||
### テキストボックス {#text-boxes}
|
||||
|
||||
`textBoxes` 配列の各エントリは次を持つ必要があります。
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| id | string | レイアウトに対応するボックス識別子(例: `"top"`, `"bottom"`, `"left"`, `"right"`, `"center"`) |
|
||||
| text | string | 表示するミームテキスト |
|
||||
|
||||
### テキストレイアウトのボックス ID {#text-layout-box-ids}
|
||||
|
||||
| レイアウト | 利用可能なボックス ID |
|
||||
|--------|-------------------|
|
||||
| `top-bottom` | `top`, `bottom` |
|
||||
| `top-only` | `top` |
|
||||
| `bottom-only` | `bottom` |
|
||||
| `center` | `center` |
|
||||
| `side-by-side` | `left`, `right` |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
上下のテキストを付けたカスタム画像:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/meme-generator \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"textLayout": "top-bottom", "textBoxes": [{"id": "top", "text": "When the code works"}, {"id": "bottom", "text": "On the first try"}], "fontFamily": "anton", "allCaps": true}'
|
||||
```
|
||||
|
||||
組み込みテンプレートを使用(JSON ボディ、ファイルアップロードなし):
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/meme-generator \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"templateId": "drake", "textBoxes": [{"id": "top", "text": "Manual testing"}, {"id": "bottom", "text": "Automated tests"}]}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/meme-drake.png",
|
||||
"originalSize": 450000,
|
||||
"processedSize": 520000
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `templateId` かアップロードした画像ファイルのいずれかが必要です。両方を指定した場合はテンプレートが使用されます。
|
||||
- テンプレートは独自のテキストボックス位置を定義するため、テンプレート使用時は `textLayout` パラメーターは無視されます。
|
||||
- テキストはクラシックなミームの見た目のために、アウトラインの縁取り付き SVG としてレンダリングされます。
|
||||
- 明示的に設定されていない場合、フォントサイズはテキストボックスに収まるよう自動計算されます。
|
||||
- 空のテキストボックスはスキップされます(すべてのボックスが空の場合はレンダリングされません)。
|
||||
- テンプレート使用時は、出力ファイル名にテンプレート ID が含まれます(例: `meme-drake.png`)。
|
||||
- HEIC、RAW、PSD、SVG の入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
description: "複数の品質ティアオプションを備えた AI ノイズ・粒状感除去。"
|
||||
i18n_source_hash: f0dfc876e0e0
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d50068ef71e8
|
||||
---
|
||||
|
||||
# ノイズ除去 {#noise-removal}
|
||||
|
||||
Python サイドカー(SCUNet モデル)を使用した、複数の品質ティアオプションを備えた AI ノイズ・粒状感除去。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/noise-removal`
|
||||
|
||||
**処理:** 非同期(202 を返し、SSE 経由で `/api/v1/jobs/{jobId}/progress` をポーリングしてステータスを取得)
|
||||
|
||||
**モデルバンドル:** `upscale-enhance`(5~6 GB)
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(マルチパート) |
|
||||
| tier | string | No | `"balanced"` | 品質ティア: `quick`, `balanced`, `quality`, `maximum` |
|
||||
| strength | number | No | `50` | ノイズ除去の強度(0~100) |
|
||||
| detailPreservation | number | No | `50` | 保持するディテールの量(0~100)。値が高いほどテクスチャがより多く保持される |
|
||||
| colorNoise | number | No | `30` | カラーノイズ低減の強度(0~100) |
|
||||
| format | string | No | `"original"` | 出力フォーマット: `original`, `png`, `jpeg`, `webp`, `avif`, `jxl` |
|
||||
| quality | number | No | `90` | 出力エンコード品質(1~100) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/noise-removal \
|
||||
-F "file=@noisy-photo.jpg" \
|
||||
-F 'settings={"tier":"quality","strength":60,"detailPreservation":70,"colorNoise":40}'
|
||||
```
|
||||
|
||||
## レスポンス {#response}
|
||||
|
||||
### 初期レスポンス(202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(`/api/v1/jobs/{jobId}/progress` の SSE) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Denoising...","percent":65}
|
||||
```
|
||||
|
||||
### 最終結果(SSE 経由) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/noisy-photo_denoised.jpg",
|
||||
"originalSize": 500000,
|
||||
"processedSize": 380000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `upscale-enhance` モデルバンドル(5~6 GB)のインストールが必要です。
|
||||
- 品質ティアは速度と品質のトレードオフです。`quick` は基本的なノイズ除去で最速、`maximum` は最も入念なマルチパス方式を使用します。
|
||||
- `detailPreservation` パラメーターは、テクスチャのある被写体(布地、髪、葉)に対して重要です。値を高くすると、ノイズ除去処理が細かいディテールを滑らかにしてしまうのを防ぎます。
|
||||
- `format` が `"original"` に設定されている場合、出力フォーマットは入力ファイルのフォーマットに一致します。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力フォーマットを自動デコードでサポートします。
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
description: "AI による光学式文字認識で画像からテキストを抽出します。"
|
||||
i18n_source_hash: 3d85d423b82c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 26f22dbdf9c3
|
||||
---
|
||||
|
||||
# OCR / テキスト抽出 {#ocr-text-extraction}
|
||||
|
||||
AI による光学式文字認識(OCR)で画像からテキストを抽出します。複数の言語と品質ティアに対応しています。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/ocr`
|
||||
|
||||
**処理:** 同期的な JSON レスポンス。`clientJobId` が指定された場合、進捗も SSE 経由で報告されます。
|
||||
|
||||
**モデルバンドル:** `ocr`(5~6 GB)
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(マルチパート) |
|
||||
| quality | string | No | `"balanced"` | 品質ティア: `fast`(Tesseract), `balanced`(PaddleOCR v5), `best`(PaddleOCR VL) |
|
||||
| language | string | No | `"auto"` | 言語ヒント: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
|
||||
| enhance | boolean | No | `true` | OCR 精度向上のために画像を前処理する |
|
||||
| engine | string | No | - | 非推奨。代わりに `quality` を使用してください。`tesseract` を `fast` に、`paddleocr` を `balanced` にマッピングします |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/ocr \
|
||||
-F "file=@document.png" \
|
||||
-F 'settings={"quality":"best","language":"en","enhance":true}'
|
||||
```
|
||||
|
||||
## レスポンス(200 OK) {#response-200-ok}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"filename": "document.png",
|
||||
"text": "Extracted text content from the image...",
|
||||
"engine": "paddleocr-vl"
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(SSE、オプション) {#progress-sse-optional}
|
||||
|
||||
`clientJobId` フォームフィールドが指定された場合、進捗イベントがストリーミングされます。
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Recognizing text...","percent":50}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `ocr` モデルバンドル(5~6 GB)のインストールが必要です。
|
||||
- OCR は画像のダウンロード URL ではなく、抽出したテキストを直接返します。
|
||||
- フォールバックチェーンを使用します。上位の品質ティアがクラッシュした場合(例: PaddleOCR のセグメンテーション違反)、自動的に一段下のティアで再試行します。
|
||||
- クラッシュせずに空のテキストが返された場合も、次のティアにフォールバックします。
|
||||
- 品質ティアはエンジンにマッピングされます。`fast` = Tesseract、`balanced` = PaddleOCR v5、`best` = PaddleOCR VL。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力フォーマットを自動デコードでサポートします。
|
||||
@@ -0,0 +1,74 @@
|
||||
---
|
||||
description: "フォーマット変換、品質制御、リサイズ、メタデータ除去で画像を Web 配信向けに最適化します。"
|
||||
i18n_source_hash: c327bbbce768
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 320e91cbde2f
|
||||
---
|
||||
|
||||
# Web 向け最適化 {#optimize-for-web}
|
||||
|
||||
画像を 1 ステップで Web 配信向けに最適化します。フォーマット変換、品質調整、任意のリサイズ、プログレッシブエンコード、メタデータ除去を組み合わせます。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/optimize-for-web`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
`POST /api/v1/tools/image/optimize-for-web/preview` にはライブプレビュー用のエンドポイントも用意されており、処理済み画像をバイナリとして直接返します(ワークスペースは作成されません)。リアルタイムのパラメーター調整に使用できます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"webp"` | 出力フォーマット: `webp`, `jpeg`, `avif`, `png`, `jxl` |
|
||||
| quality | number | No | `80` | 出力品質(1~100) |
|
||||
| maxWidth | number | No | - | 最大幅(ピクセル)。これより広い画像は縮小されます。 |
|
||||
| maxHeight | number | No | - | 最大高さ(ピクセル)。これより高い画像は縮小されます。 |
|
||||
| progressive | boolean | No | `true` | プログレッシブ/インターレースエンコードを有効にする |
|
||||
| stripMetadata | boolean | No | `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}
|
||||
|
||||
- このツールは、Web アセット向けのワンストップ最適化パイプラインとして設計されています。フォーマット変換、品質調整、最大寸法の制限、メタデータ除去を 1 回のパスで処理します。
|
||||
- 出力ファイル名の拡張子は、選択したフォーマットに合わせて更新されます。
|
||||
- JXL(JPEG XL)のエンコードには専用の CLI エンコーダーを使用します。画像はまず PNG として処理され、その後 JXL にエンコードされます。
|
||||
- プログレッシブエンコードは、完全な画像が読み込まれる前にブラウザーが低品質のプレビューを表示できるようにすることで、JPEG と PNG の体感的な読み込み時間を改善します。
|
||||
- プレビューエンドポイントは軽量で(ワークスペースやジョブを作成しません)、フロントエンドのライブパラメーター調整 UI 向けに用意されています。
|
||||
@@ -0,0 +1,173 @@
|
||||
---
|
||||
description: "顔検出、背景除去、印刷シートの並べ配置を備えた AI パスポート・証明写真ジェネレーター。"
|
||||
i18n_source_hash: d4b4f4ced988
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2b0c1ea5ec9f
|
||||
---
|
||||
|
||||
# パスポート写真 {#passport-photo}
|
||||
|
||||
AI によるパスポート・証明写真ジェネレーター。2 フェーズのワークフローで、解析(顔検出 + 背景除去)してから生成(切り抜き、リサイズ、印刷用の並べ配置)を行います。
|
||||
|
||||
## API エンドポイント {#api-endpoints}
|
||||
|
||||
このツールは、解析と生成で別々のエンドポイントを使う 2 フェーズのフローを採用しています。
|
||||
|
||||
**モデルバンドル:** `background-removal` および `face-detection`
|
||||
|
||||
---
|
||||
|
||||
### フェーズ 1: 解析 {#phase-1-analyze}
|
||||
|
||||
`POST /api/v1/tools/image/passport-photo/analyze`
|
||||
|
||||
顔のランドマークを検出し、背景を除去します。フロントエンドが切り抜きプレビューを表示するために、ランドマークデータとプレビューを返します。
|
||||
|
||||
#### パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(マルチパート) |
|
||||
| clientJobId | string | No | - | SSE 経由での進捗追跡用の任意のジョブ ID |
|
||||
|
||||
#### リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/passport-photo/analyze \
|
||||
-F "file=@headshot.jpg"
|
||||
```
|
||||
|
||||
#### レスポンス(200 OK) {#response-200-ok}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"filename": "headshot.jpg",
|
||||
"preview": "<base64-encoded PNG>",
|
||||
"previewWidth": 800,
|
||||
"previewHeight": 1067,
|
||||
"landmarks": {
|
||||
"leftEye": { "x": 0.42, "y": 0.35 },
|
||||
"rightEye": { "x": 0.58, "y": 0.35 },
|
||||
"eyeCenter": { "x": 0.50, "y": 0.35 },
|
||||
"chin": { "x": 0.50, "y": 0.65 },
|
||||
"forehead": { "x": 0.50, "y": 0.22 },
|
||||
"crown": { "x": 0.50, "y": 0.18 },
|
||||
"nose": { "x": 0.50, "y": 0.48 },
|
||||
"faceCenterX": 0.50
|
||||
},
|
||||
"imageWidth": 2400,
|
||||
"imageHeight": 3200
|
||||
}
|
||||
```
|
||||
|
||||
#### 進捗(SSE、オプション) {#progress-sse-optional}
|
||||
|
||||
`clientJobId` が指定された場合、進捗がストリーミングされます(顔検出が 0~30%、背景除去が 30~95%)。
|
||||
|
||||
#### エラー: 顔が検出されない(422) {#error-no-face-detected-422}
|
||||
|
||||
```json
|
||||
{
|
||||
"error": "No face detected",
|
||||
"details": "Could not detect a face in the uploaded image. Please upload a clear, front-facing photo with good lighting."
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### フェーズ 2: 生成 {#phase-2-generate}
|
||||
|
||||
`POST /api/v1/tools/image/passport-photo/generate`
|
||||
|
||||
写真を切り抜き、リサイズし、任意で印刷シート上に並べて配置します。フェーズ 1 のキャッシュ画像を使用します(AI の再実行なし)。
|
||||
|
||||
#### パラメーター(JSON ボディ) {#parameters-json-body}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| jobId | string | Yes | - | フェーズ 1 のジョブ ID |
|
||||
| filename | string | Yes | - | フェーズ 1 の元のファイル名 |
|
||||
| countryCode | string | Yes | - | パスポート仕様の国コード(例: `US`, `GB`, `IN`) |
|
||||
| documentType | string | No | `"passport"` | 書類タイプ(国別仕様による) |
|
||||
| bgColor | string | No | `"#FFFFFF"` | 背景色(16 進) |
|
||||
| printLayout | string | No | `"none"` | 印刷用紙のレイアウト: `none`, `4x6`, `a4` |
|
||||
| maxFileSizeKb | number | No | `0` | 最大ファイルサイズ制約(KB、0 = 制限なし) |
|
||||
| dpi | number | No | `300` | 出力 DPI(72~1200) |
|
||||
| customWidthMm | number | No | - | カスタム写真幅(mm、国別仕様を上書き) |
|
||||
| customHeightMm | number | No | - | カスタム写真高さ(mm、国別仕様を上書き) |
|
||||
| zoom | number | No | `1` | ズーム倍率(0.5~3)。1 より大きい値でより狭く切り抜く |
|
||||
| adjustX | number | No | `0` | 水平方向の位置調整 |
|
||||
| adjustY | number | No | `0` | 垂直方向の位置調整 |
|
||||
| landmarks | object | Yes | - | フェーズ 1 レスポンスのランドマークオブジェクト |
|
||||
| imageWidth | number | Yes | - | フェーズ 1 レスポンスの画像幅 |
|
||||
| imageHeight | number | Yes | - | フェーズ 1 レスポンスの画像高さ |
|
||||
|
||||
#### リクエスト例 {#example-request-1}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/passport-photo/generate \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"jobId": "a1b2c3d4-...",
|
||||
"filename": "headshot.jpg",
|
||||
"countryCode": "US",
|
||||
"documentType": "passport",
|
||||
"bgColor": "#FFFFFF",
|
||||
"printLayout": "4x6",
|
||||
"dpi": 300,
|
||||
"zoom": 1,
|
||||
"adjustX": 0,
|
||||
"adjustY": 0,
|
||||
"landmarks": { "leftEye": {"x":0.42,"y":0.35}, "rightEye": {"x":0.58,"y":0.35}, "eyeCenter": {"x":0.50,"y":0.35}, "chin": {"x":0.50,"y":0.65}, "forehead": {"x":0.50,"y":0.22}, "crown": {"x":0.50,"y":0.18}, "nose": {"x":0.50,"y":0.48}, "faceCenterX": 0.50 },
|
||||
"imageWidth": 2400,
|
||||
"imageHeight": 3200
|
||||
}'
|
||||
```
|
||||
|
||||
#### レスポンス(200 OK) {#response-200-ok-1}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/headshot_passport.jpg",
|
||||
"dimensions": {
|
||||
"widthMm": 51,
|
||||
"heightMm": 51,
|
||||
"widthPx": 602,
|
||||
"heightPx": 602,
|
||||
"dpi": 300
|
||||
},
|
||||
"spec": {
|
||||
"country": "United States",
|
||||
"countryCode": "US",
|
||||
"documentType": "passport",
|
||||
"documentLabel": "Passport"
|
||||
},
|
||||
"printDownloadUrl": "/api/v1/download/{jobId}/headshot_passport_print_4x6.jpg"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ベースルート {#base-route}
|
||||
|
||||
`POST /api/v1/tools/image/passport-photo`
|
||||
|
||||
正しいサブエンドポイントを使用するための案内を返します。
|
||||
|
||||
```json
|
||||
{
|
||||
"error": "Use /api/v1/tools/image/passport-photo/analyze or /generate"
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `background-removal` および `face-detection` モデルバンドルのインストールが必要です。
|
||||
- フェーズ 1 は AI(顔のランドマーク + 背景除去)を実行し、結果をキャッシュします。フェーズ 2 は純粋な Sharp による画像操作です(高速、AI 不要)。
|
||||
- ランドマークは正規化された座標(画像寸法に対する 0~1 の範囲)として返されます。
|
||||
- 解析レスポンスの `preview` フィールドは、高速表示のための base64 エンコードされた PNG(最大幅 800px)です。
|
||||
- 国別仕様には、公式のパスポート写真要件に基づく書類寸法、頭部の高さ比率、目線の位置が含まれます。
|
||||
- `printLayout` オプションは、4x6 インチまたは A4 用紙上に、写真間 2mm の余白を空けて並べたシートを生成します。
|
||||
- `maxFileSizeKb` が設定されている場合、サイズ制限に収まるよう出力が反復的に圧縮されます。
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
description: "画像全体または特定の領域にモザイク効果を適用します。"
|
||||
i18n_source_hash: a3ad29841f7b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8fef788d8344
|
||||
---
|
||||
|
||||
# モザイク {#pixelate}
|
||||
|
||||
画像全体または特定の矩形領域にモザイク効果を適用します。顔、ナンバープレート、個人情報などの機密内容を隠すのに便利です。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/pixelate`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| blockSize | integer | No | `12` | ピクセルブロックのサイズ(2~128)。値を大きくすると粗いモザイクになる |
|
||||
| region | object | No | - | モザイクを矩形に限定する(下記参照) |
|
||||
|
||||
### region オブジェクト {#region-object}
|
||||
|
||||
| フィールド | 型 | 必須 | 説明 |
|
||||
|-------|------|----------|-------------|
|
||||
| left | integer | Yes | 左からのオフセット(ピクセル、>= 0) |
|
||||
| top | integer | Yes | 上からのオフセット(ピクセル、>= 0) |
|
||||
| width | integer | Yes | 領域の幅(ピクセル、>= 1) |
|
||||
| height | integer | Yes | 領域の高さ(ピクセル、>= 1) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
画像全体にモザイクをかける:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/pixelate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"blockSize": 20}'
|
||||
```
|
||||
|
||||
特定の領域にモザイクをかける:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/pixelate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"blockSize": 16, "region": {"left": 100, "top": 50, "width": 200, "height": 150}}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2380000
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `region` を省略した場合、画像全体にモザイクがかかります。
|
||||
- 領域の座標は画像の左上隅を基準としたピクセル値です。領域は画像の範囲内に収まる必要があります。
|
||||
- 出力フォーマットは入力フォーマットに一致します。HEIC、RAW、PSD、SVG の入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,76 @@
|
||||
---
|
||||
description: "カスタムカラーと誤り訂正レベルを指定して QR コードを生成します。"
|
||||
i18n_source_hash: 096ef4d90da5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e827c186510a
|
||||
---
|
||||
|
||||
# QR コードジェネレーター {#qr-code-generator}
|
||||
|
||||
テキストや URL から QR コード画像を生成します。サイズ、誤り訂正レベル、前景色/背景色のカスタマイズが可能です。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/qr-generate`
|
||||
|
||||
**JSON ボディ**(マルチパートではない)を受け付けます。ファイルアップロードは不要です。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Yes | - | QR コードにエンコードする内容(1~2000 文字) |
|
||||
| size | number | No | `400` | 出力画像の幅/高さ(ピクセル、100~10000) |
|
||||
| errorCorrection | string | No | `"M"` | 誤り訂正レベル: `L`(7%), `M`(15%), `Q`(25%), `H`(30%) |
|
||||
| foreground | string | No | `"#000000"` | QR コードの前景/モジュール色(16 進、`#RRGGBB`) |
|
||||
| background | string | No | `"#FFFFFF"` | QR コードの背景色(16 進、`#RRGGBB`) |
|
||||
| logoDataUri | string | No | - | データ URI としてのロゴ画像(`data:image/png;base64,...` または `data:image/jpeg;base64,...`、最大 700 KB)。QR コードの中央に QR サイズの 22% で配置されます。誤り訂正を `H` に強制します |
|
||||
|
||||
### 誤り訂正レベル {#error-correction-levels}
|
||||
|
||||
| レベル | 復元率 | ユースケース |
|
||||
|-------|----------|----------|
|
||||
| `L` | 約 7% | 最大のデータ密度 |
|
||||
| `M` | 約 15% | バランス型(デフォルト) |
|
||||
| `Q` | 約 25% | 印刷コードに適する |
|
||||
| `H` | 約 30% | ロゴを重ねたコードに最適 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"text": "https://snapotter.com", "size": 500, "errorCorrection": "H"}'
|
||||
```
|
||||
|
||||
カスタムカラーのブランド QR コード:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"text": "Hello World", "size": 300, "foreground": "#1a365d", "background": "#f7fafc"}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/qrcode.png",
|
||||
"originalSize": 0,
|
||||
"processedSize": 4520
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- このエンドポイントは、画像アップロードが不要なため、マルチパートフォームデータではなく JSON を受け付けます。
|
||||
- 出力は常に PNG 画像です。
|
||||
- 出力ファイル名は常に `qrcode.png` です。
|
||||
- このツールは画像を新規生成するため、`originalSize` は常に 0 です。
|
||||
- QR コードの周囲には 2 モジュールのクワイエットゾーン(余白)が含まれます。
|
||||
- テキストの最大長は 2000 文字です。実際の容量は誤り訂正レベルと文字エンコードによって異なります。
|
||||
- 誤り訂正レベルを高くすると、QR コードが部分的に隠れてもスキャン可能なままになりますが、データ容量は減少します。
|
||||
- `logoDataUri` が指定された場合、ロゴが中央を覆っても QR コードがスキャン可能なままになるよう、誤り訂正が自動的に `H`(30%)に強制されます。
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
description: "カメラのフラッシュによる赤目を AI で検出・補正します。"
|
||||
i18n_source_hash: 647c6ff1ef7c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 87d613a0e743
|
||||
---
|
||||
|
||||
# 赤目補正 {#red-eye-removal}
|
||||
|
||||
カメラのフラッシュによる赤目を AI で検出・補正します。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/red-eye-removal`
|
||||
|
||||
**処理:** 非同期(202 を返し、SSE 経由で `/api/v1/jobs/{jobId}/progress` をポーリングしてステータスを取得)
|
||||
|
||||
**モデルバンドル:** `face-detection`(200~300 MB)
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(マルチパート) |
|
||||
| sensitivity | number | No | `50` | 赤目検出の感度(0~100)。値が高いほど、より薄い赤目も検出する |
|
||||
| strength | number | No | `70` | 補正の強度(0~100)。赤みをどれだけ強く打ち消すか |
|
||||
| format | string | No | - | 出力フォーマット(任意の上書き) |
|
||||
| quality | number | No | `90` | 出力品質(1~100) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/red-eye-removal \
|
||||
-F "file=@flash-photo.jpg" \
|
||||
-F 'settings={"sensitivity":60,"strength":80}'
|
||||
```
|
||||
|
||||
## レスポンス {#response}
|
||||
|
||||
### 初期レスポンス(202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(`/api/v1/jobs/{jobId}/progress` の SSE) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Detecting red eyes...","percent":40}
|
||||
```
|
||||
|
||||
### 最終結果(SSE 経由) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/flash-photo_redeye_fixed.png",
|
||||
"originalSize": 280000,
|
||||
"processedSize": 290000,
|
||||
"facesDetected": 2,
|
||||
"eyesCorrected": 4
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `face-detection` モデルバンドル(200~300 MB)のインストールが必要です。
|
||||
- まず顔を検出し、次に各顔の中の目の領域を特定し、最後に赤目のピクセルを識別して補正します。
|
||||
- `facesDetected` のカウントは見つかった顔の数を示します。`eyesCorrected` は赤目補正が行われた個々の目の総数です。
|
||||
- 品質を最大限に保つため、出力は常に PNG です。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力フォーマットを自動デコードでサポートします。
|
||||
@@ -0,0 +1,136 @@
|
||||
---
|
||||
description: "任意のエフェクト(ぼかし、影、グラデーション、カスタム背景)を備えた AI 背景除去。"
|
||||
i18n_source_hash: 326a91284529
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7c5bacf509f7
|
||||
---
|
||||
|
||||
# 背景除去 {#remove-background}
|
||||
|
||||
任意のエフェクト(ぼかし、影、グラデーション、カスタム背景)を備えた AI 背景除去。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/remove-background`
|
||||
|
||||
**処理:** 非同期(202 を返し、SSE 経由で `/api/v1/jobs/{jobId}/progress` をポーリングしてステータスを取得)
|
||||
|
||||
**モデルバンドル:** `background-removal`(4~5 GB)
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(マルチパート) |
|
||||
| model | string | No | - | 使用する AI モデルのバリアント |
|
||||
| backgroundType | string | No | `"transparent"` | 次のいずれか: `transparent`, `color`, `gradient`, `blur`, `image` |
|
||||
| backgroundColor | string | No | - | 単色背景の 16 進カラー |
|
||||
| gradientColor1 | string | No | - | グラデーションの 1 色目 |
|
||||
| gradientColor2 | string | No | - | グラデーションの 2 色目 |
|
||||
| gradientAngle | number | No | - | グラデーションの角度(度) |
|
||||
| blurEnabled | boolean | No | - | 背景ぼかし効果を有効にする |
|
||||
| blurIntensity | number | No | - | ぼかしの強度(0~100) |
|
||||
| shadowEnabled | boolean | No | - | 被写体にドロップシャドウを有効にする |
|
||||
| shadowOpacity | number | No | - | 影の不透明度(0~100) |
|
||||
| outputFormat | string | No | - | 出力フォーマット: `png`, `webp`, または `avif` |
|
||||
| edgeRefine | integer | No | - | エッジの精細化レベル(0~3) |
|
||||
| decontaminate | boolean | No | - | エッジの色にじみを除去する |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/remove-background \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"backgroundType":"transparent","edgeRefine":2,"outputFormat":"png"}'
|
||||
```
|
||||
|
||||
## レスポンス {#response}
|
||||
|
||||
### 初期レスポンス(202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(`/api/v1/jobs/{jobId}/progress` の SSE) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Removing background...","percent":50}
|
||||
```
|
||||
|
||||
### 最終結果(SSE 経由) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/photo_mask.png",
|
||||
"maskUrl": "/api/v1/download/{jobId}/photo_mask.png",
|
||||
"originalUrl": "/api/v1/download/{jobId}/photo_original.png",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 180000,
|
||||
"filename": "photo.jpg",
|
||||
"model": "rembg"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## エフェクトエンドポイント(フェーズ 2) {#effects-endpoint-phase-2}
|
||||
|
||||
`POST /api/v1/tools/image/remove-background/effects`
|
||||
|
||||
AI モデルを再実行せずに背景エフェクトを再適用します。フェーズ 1 のキャッシュされたマスクと元画像を使用します。
|
||||
|
||||
### パラメーター {#parameters-1}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| settings | JSON | Yes | - | エフェクト設定を含む JSON(下記参照) |
|
||||
| backgroundImage | file | No | - | カスタム背景画像(backgroundType が `image` の場合) |
|
||||
|
||||
#### settings JSON のフィールド {#settings-json-fields}
|
||||
|
||||
| フィールド | 型 | 必須 | 説明 |
|
||||
|-------|------|----------|-------------|
|
||||
| jobId | string | Yes | フェーズ 1 のジョブ ID |
|
||||
| filename | string | Yes | フェーズ 1 の元のファイル名 |
|
||||
| backgroundType | string | No | `transparent`, `color`, `gradient`, `blur`, `image` |
|
||||
| backgroundColor | string | No | 単色背景の 16 進カラー |
|
||||
| gradientColor1 | string | No | グラデーションの 1 色目 |
|
||||
| gradientColor2 | string | No | グラデーションの 2 色目 |
|
||||
| gradientAngle | number | No | グラデーションの角度(度) |
|
||||
| blurEnabled | boolean | No | 背景ぼかしを有効にする |
|
||||
| blurIntensity | number | No | ぼかしの強度(0~100) |
|
||||
| shadowEnabled | boolean | No | ドロップシャドウを有効にする |
|
||||
| shadowOpacity | number | No | 影の不透明度(0~100) |
|
||||
| outputFormat | string | No | `png`, `webp`, または `avif` |
|
||||
|
||||
### リクエスト例 {#example-request-1}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/remove-background/effects \
|
||||
-F 'settings={"jobId":"a1b2c3d4-...","filename":"photo.jpg","backgroundType":"color","backgroundColor":"#FF5500","outputFormat":"png"}'
|
||||
```
|
||||
|
||||
### レスポンス(200 OK) {#response-200-ok}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/photo_nobg.png",
|
||||
"processedSize": 195000
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `background-removal` モデルバンドル(4~5 GB)のインストールが必要です。
|
||||
- フェーズ 1 は透明マスクと元画像をキャッシュするため、フェーズ 2(エフェクト)では AI モデルを再実行せずに、異なる背景を即座に再適用できます。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR の入力フォーマットを自動デコードでサポートします。
|
||||
- 処理前に EXIF の回転が自動補正されます。
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "画像内の特定の色を別の色に置き換える、または透明にします。"
|
||||
i18n_source_hash: df55ac451ecb
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3cee4fe81477
|
||||
---
|
||||
|
||||
# 色の置換・反転 {#replace-invert-color}
|
||||
|
||||
ソース色に一致するピクセルをターゲット色に置き換える、または透明にします。RGB 空間でのユークリッド距離を使い、設定可能な許容値で色の境界を滑らかにブレンドします。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/replace-color`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| sourceColor | string | No | `"#FF0000"` | 検出する 16 進カラー(形式: `#RRGGBB`) |
|
||||
| targetColor | string | No | `"#00FF00"` | 置き換える 16 進カラー(形式: `#RRGGBB`) |
|
||||
| makeTransparent | boolean | No | `false` | 一致するピクセルをターゲット色に置き換える代わりに透明にする |
|
||||
| tolerance | number | No | `30` | 色一致の許容値(0~255)。値が高いほど、より広い範囲の類似色に一致する |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/replace-color \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"sourceColor": "#FF0000", "targetColor": "#0000FF", "tolerance": 40}'
|
||||
```
|
||||
|
||||
緑の背景を透明にする:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/replace-color \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@greenscreen.png" \
|
||||
-F 'settings={"sourceColor": "#00FF00", "makeTransparent": true, "tolerance": 50}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.png",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2100000
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- 色の一致には RGB 空間でのユークリッド距離を使用し、`tolerance * sqrt(3)` でスケーリングします。
|
||||
- 置換のブレンドは色距離に比例します。ソース色に近いピクセルほどターゲット色を多く受け取り、滑らかな遷移を作り出します。
|
||||
- `makeTransparent` が `true` の場合、入力フォーマットがアルファチャンネルをサポートしない(例: JPEG)ときは、出力が PNG(または WebP/AVIF)に強制されます。
|
||||
- 許容値 0 は、完全に一致するソース色のみに一致します。値を高くする(50 以上)と、より広い範囲の類似した色相に一致します。
|
||||
- 透明化が必要で入力フォーマットがアルファをサポートしない場合を除き、出力フォーマットは入力フォーマットに一致します。
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
description: "ピクセル、パーセンテージ、またはフィットモードで画像をリサイズします。"
|
||||
i18n_source_hash: 00d1bffa4d38
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 73a139cca480
|
||||
---
|
||||
|
||||
# リサイズ {#resize}
|
||||
|
||||
正確なピクセル寸法、パーセンテージによる拡大縮小率、または画像をターゲット寸法にどう適応させるかを制御するフィットモードを指定して、画像をリサイズします。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/resize`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | No | - | ターゲット幅(ピクセル、最大 16383) |
|
||||
| height | integer | No | - | ターゲット高さ(ピクセル、最大 16383) |
|
||||
| fit | string | No | `"contain"` | 画像を寸法にどう合わせるか: `contain`, `cover`, `fill`, `inside`, `outside` |
|
||||
| withoutEnlargement | boolean | No | `false` | 画像がターゲットより小さい場合に拡大を防ぐ |
|
||||
| percentage | number | No | - | パーセンテージでスケールする(例: 半分のサイズなら 50) |
|
||||
|
||||
`width`、`height`、`percentage` のうち少なくとも 1 つを指定する必要があります。
|
||||
|
||||
### フィットモード {#fit-modes}
|
||||
|
||||
- **contain** - アスペクト比を保持したまま寸法内に収まるようリサイズ(余白が残る場合あり)
|
||||
- **cover** - アスペクト比を保持したまま寸法を覆うようにリサイズ(切り抜かれる場合あり)
|
||||
- **fill** - 寸法に正確に一致するよう引き伸ばす(アスペクト比を無視)
|
||||
- **inside** - `contain` と同様だが、縮小のみで拡大はしない
|
||||
- **outside** - `cover` と同様だが、縮小のみで拡大はしない
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/resize \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"width": 800, "height": 600, "fit": "contain"}'
|
||||
```
|
||||
|
||||
パーセンテージでリサイズ:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/resize \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"percentage": 50}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 980000
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- どちらの軸も最大寸法は 16383 ピクセルです(Sharp/libvips の制限)。
|
||||
- 出力フォーマットは入力フォーマットに一致します。HEIC、RAW、PSD、SVG の入力は処理前に自動的にデコードされます。
|
||||
- リサイズ前に EXIF の向きが自動適用されます。
|
||||
- `withoutEnlargement` フラグは、一部の画像がすでにターゲットより小さい可能性があるバッチ処理で便利です。
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
description: "復元、顔の補正、着色のための AI パイプラインで、古い写真の傷、破れ、損傷を修復します。"
|
||||
i18n_source_hash: 3de13284216c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bf379afff59d
|
||||
---
|
||||
|
||||
# 写真復元 {#photo-restoration}
|
||||
|
||||
複数ステップの AI パイプラインを使って、古い写真の傷、破れ、損傷を修復します。傷の修復、顔の補正、ノイズ除去、任意の着色を組み合わせます。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/restore-photo`
|
||||
|
||||
**処理:** 非同期(202 を返し、SSE 経由で `/api/v1/jobs/{jobId}/progress` をポーリングしてステータスを取得)
|
||||
|
||||
**モデルバンドル:** `photo-restoration`(4~5 GB)
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(マルチパート) |
|
||||
| scratchRemoval | boolean | No | `true` | 傷や表面の損傷を除去する |
|
||||
| faceEnhancement | boolean | No | `true` | 復元した写真内の顔を補正する |
|
||||
| fidelity | number | No | `0.7` | 顔補正の忠実度(0~1)。値が高いほど元の特徴をより多く保持する |
|
||||
| denoise | boolean | No | `true` | 復元結果にノイズ除去を適用する |
|
||||
| denoiseStrength | number | No | `25` | ノイズ除去の強度(0~100) |
|
||||
| colorize | boolean | No | `false` | 復元した写真を着色する(グレースケール画像向け) |
|
||||
| colorizeStrength | number | No | `85` | 着色の強度(0~100) |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/restore-photo \
|
||||
-F "file=@damaged-old-photo.jpg" \
|
||||
-F 'settings={"scratchRemoval":true,"faceEnhancement":true,"fidelity":0.6,"colorize":true}'
|
||||
```
|
||||
|
||||
## レスポンス {#response}
|
||||
|
||||
### 初期レスポンス(202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### 進捗(`/api/v1/jobs/{jobId}/progress` の SSE) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Removing scratches...","percent":30}
|
||||
```
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Enhancing faces...","percent":60}
|
||||
```
|
||||
|
||||
### 最終結果(SSE 経由) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/damaged-old-photo_restored.jpg",
|
||||
"previewUrl": "/api/v1/download/{jobId}/preview.webp",
|
||||
"originalSize": 200000,
|
||||
"processedSize": 350000,
|
||||
"width": 1200,
|
||||
"height": 900,
|
||||
"steps": ["scratch_removal", "face_enhancement", "denoise", "colorize"],
|
||||
"scratchCoverage": 12.5,
|
||||
"facesEnhanced": 2,
|
||||
"isGrayscale": true,
|
||||
"colorized": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- `photo-restoration` モデルバンドル(4~5 GB)のインストールが必要です。
|
||||
- パイプラインは複数の AI ステップを順番に実行します。傷の修復、顔の補正(GFPGAN)、ノイズ除去、そして任意の着色です。
|
||||
- 結果の `steps` 配列は、実際に実行された処理ステップを示します。
|
||||
- `scratchCoverage` は、傷の損傷があった画像領域の推定パーセンテージです。
|
||||
- `fidelity` は、顔を元の見た目を保持することに対してどれだけ強く補正するかを制御します。値が低いほど補正が強くなり、値が高いほど控えめになります。
|
||||
- `colorize` オプションは、画像がグレースケールかどうかを自動検出します。結果の `isGrayscale` フラグがこの検出を確認します。
|
||||
- 出力フォーマットは自動的に入力フォーマットに一致します。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDR、AVIF の入力フォーマットを自動デコードでサポートします。
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
description: "任意の角度で画像を回転し、水平方向または垂直方向に反転します。"
|
||||
i18n_source_hash: af2581d7cd8d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f4f347d12e10
|
||||
---
|
||||
|
||||
# 回転・反転 {#rotate-flip}
|
||||
|
||||
画像を任意の角度で回転したり、水平方向または垂直方向に反転したりします。回転と反転の操作は 1 回のリクエストで組み合わせられます。
|
||||
|
||||
## API エンドポイント {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/rotate`
|
||||
|
||||
画像ファイルと JSON の `settings` フィールドを含むマルチパートフォームデータを受け付けます。
|
||||
|
||||
## パラメーター {#parameters}
|
||||
|
||||
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| angle | number | No | `0` | 回転角度(度、時計回り)。任意の数値を受け付ける。 |
|
||||
| horizontal | boolean | No | `false` | 画像を水平方向に反転(ミラー) |
|
||||
| vertical | boolean | No | `false` | 画像を垂直方向に反転 |
|
||||
|
||||
## リクエスト例 {#example-request}
|
||||
|
||||
時計回りに 90 度回転:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/rotate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"angle": 90}'
|
||||
```
|
||||
|
||||
水平方向に反転:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/rotate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"horizontal": true}'
|
||||
```
|
||||
|
||||
回転と反転を同時に行う:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/rotate \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"angle": 45, "vertical": true}'
|
||||
```
|
||||
|
||||
## レスポンス例 {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2480000
|
||||
}
|
||||
```
|
||||
|
||||
## 注意事項 {#notes}
|
||||
|
||||
- 回転が先に適用され、その後に反転操作が行われます。
|
||||
- 90 度以外の回転(例: 45 度)では、回転した画像に合わせてキャンバスが拡大され、出力フォーマットに応じて透明または黒で塗りつぶされます。
|
||||
- よく使う値: 90、180、270(4 分の 1 回転)。
|
||||
- 処理前に EXIF の向きが自動適用されるため、回転は視覚的な向きに対して相対的になります。
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
description: "アダプティブ、アンシャープマスク、ハイパスの各手法で画像をシャープ化し、オプションでノイズ低減も行います。"
|
||||
i18n_source_hash: ccb60af9faae
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d5113ae4e40c
|
||||
---
|
||||
|
||||
# Sharpening {#sharpening}
|
||||
|
||||
3つの手法を備えた高度なシャープ化ツールです。アダプティブ(スマートなエッジ認識)、アンシャープマスク(従来のradius/amount指定)、ハイパス(テクスチャ強調)に対応します。シャープ化によるアーティファクトを防ぐノイズ低減機能を内蔵しています。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/sharpening`
|
||||
|
||||
画像ファイルとJSON形式の`settings`フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| method | string | No | `"adaptive"` | シャープ化アルゴリズム: `adaptive`, `unsharp-mask`, `high-pass` |
|
||||
| sigma | number | No | `1.0` | アダプティブ: ガウシアンのsigma(0.5〜10) |
|
||||
| m1 | number | No | `1.0` | アダプティブ: 平坦領域のシャープ化(0〜10) |
|
||||
| m2 | number | No | `3.0` | アダプティブ: ギザギザ領域のシャープ化(0〜20) |
|
||||
| x1 | number | No | `2.0` | アダプティブ: 平坦/ギザギザのしきい値(0〜10) |
|
||||
| y2 | number | No | `12` | アダプティブ: 平坦領域の最大シャープ化(0〜50) |
|
||||
| y3 | number | No | `20` | アダプティブ: ギザギザ領域の最大シャープ化(0〜50) |
|
||||
| amount | number | No | `100` | アンシャープマスク: シャープ化の強さ(0〜1000) |
|
||||
| radius | number | No | `1.0` | アンシャープマスク: ぼかし半径(ピクセル、0.1〜5) |
|
||||
| threshold | number | No | `0` | アンシャープマスク: シャープ化する最小の明度差(0〜255) |
|
||||
| strength | number | No | `50` | ハイパス: フィルター強度(0〜100) |
|
||||
| kernelSize | number | No | `3` | ハイパス: 畳み込みカーネルサイズ(3または5) |
|
||||
| denoise | string | No | `"off"` | シャープ化前のノイズ低減: `off`, `light`, `medium`, `strong` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/sharpening \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"method": "adaptive", "sigma": 1.5}'
|
||||
```
|
||||
|
||||
しきい値を指定したアンシャープマスクで滑らかな領域を保護する例:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/sharpening \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"method": "unsharp-mask", "amount": 150, "radius": 1.5, "threshold": 10}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2510000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 選択した手法に関連するパラメータだけが使用されます。たとえば`method`が`adaptive`の場合、`amount`、`radius`、`threshold`は無視されます。
|
||||
- アダプティブ手法は、平坦/ギザギザ領域の挙動を設定できるSharp組み込みのアダプティブシャープ化を使用します。
|
||||
- `denoise`オプションは、ノイズや粒状感の増幅を防ぐために、シャープ化の前にノイズ低減を適用します。
|
||||
- ハイパスシャープ化は、元画像からぼかしたものを差し引いて細部を抽出し、それをブレンドし直すことで細かなディテールを取り出します。
|
||||
- 出力フォーマットは入力フォーマットに一致します。HEIC、RAW、PSD、SVGの入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
description: "SharpとAI顔検出を用いて、被写体・顔・エントロピーを認識しながら画像を賢くフレーミングして切り抜きます。"
|
||||
i18n_source_hash: acbe1439c6d8
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0effff4a667a
|
||||
---
|
||||
|
||||
# Smart Crop {#smart-crop}
|
||||
|
||||
被写体認識、顔認識、またはトリムベースのスマートな切り抜きです。Sharpのattention/entropy戦略とAI顔検出を用いて、賢くフレーミングします。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/smart-crop`
|
||||
|
||||
**処理:** 非同期(202を返し、`/api/v1/jobs/{jobId}/progress`をSSEでポーリングしてステータスを取得)
|
||||
|
||||
**モデルバンドル:** `face-detection`(200〜300 MB)- `face`モードでのみ必要
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(multipart) |
|
||||
| mode | string | No | `"subject"` | 切り抜きモード: `subject`, `face`, `trim`。(従来値の`attention`と`content`はそれぞれ`subject`と`trim`に対応します) |
|
||||
| strategy | string | No | `"attention"` | subjectモードの戦略: `attention`または`entropy` |
|
||||
| width | integer | No | - | 目標の幅(ピクセル) |
|
||||
| height | integer | No | - | 目標の高さ(ピクセル) |
|
||||
| padding | integer | No | `0` | 被写体周囲の余白の割合(0〜50) |
|
||||
| facePreset | string | No | `"head-shoulders"` | 顔フレーミングのプリセット: `closeup`, `head-shoulders`, `upper-body`, `half-body` |
|
||||
| sensitivity | number | No | `0.5` | 顔検出の感度(0〜1) |
|
||||
| threshold | integer | No | `30` | トリムモードでの背景検出のしきい値(0〜255) |
|
||||
| padToSquare | boolean | No | `false` | トリム結果を正方形にパディングします |
|
||||
| padColor | string | No | `"#ffffff"` | パディングの背景色 |
|
||||
| targetSize | integer | No | - | パディング済み出力の目標サイズ(ピクセル) |
|
||||
| quality | integer | No | - | 出力品質(1〜100) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/smart-crop \
|
||||
-F "file=@portrait.jpg" \
|
||||
-F 'settings={"mode":"face","width":1080,"height":1080,"facePreset":"head-shoulders"}'
|
||||
```
|
||||
|
||||
## Response {#response}
|
||||
|
||||
### Initial Response (202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### Progress (SSE at `/api/v1/jobs/{jobId}/progress`) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","percent":50}
|
||||
```
|
||||
|
||||
### Final Result (via SSE) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/portrait_smartcrop.jpg",
|
||||
"originalSize": 500000,
|
||||
"processedSize": 320000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Modes {#modes}
|
||||
|
||||
### Subject Mode {#subject-mode}
|
||||
Sharpのattentionまたはentropy戦略を用いて、視覚的に最も興味深い領域を見つけ、その周囲を切り抜きます。
|
||||
|
||||
### Face Mode {#face-mode}
|
||||
AIで顔を検出し、指定した`facePreset`を用いて検出された顔の周囲を切り抜きます。顔が検出されない場合はsubjectモード(attention戦略)にフォールバックします。
|
||||
|
||||
### Trim Mode {#trim-mode}
|
||||
画像から均一な余白/背景を取り除きます。オプションで、指定した背景色と目標サイズで結果を正方形にパディングします。
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- このツールは`executionHint: "long"`を指定した`createToolRoute`ファクトリを使用するため、SSE進捗とともに202を返します。
|
||||
- faceモードには`face-detection`モデルバンドル(200〜300 MB)が必要です。
|
||||
- subjectモードとtrimモードはAIモデルバンドルなしで動作します。
|
||||
- `facePreset`は、検出された顔をどれだけタイトにフレーミングするかを決定します。`closeup`が最もタイトで、`half-body`が最も広くなります。
|
||||
- 幅/高さが指定されない場合、デフォルトは1080x1080です。
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "1枚の画像を行と列またはピクセルサイズでグリッドタイルに分割し、ZIPアーカイブとして返します。"
|
||||
i18n_source_hash: 57a2e11e7cce
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ed25c8d33ed5
|
||||
---
|
||||
|
||||
# Image Splitting {#image-splitting}
|
||||
|
||||
1枚の画像を、列/行数または特定のピクセル寸法でグリッドタイルに分割します。すべてのタイルを含むZIPアーカイブを返します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/split`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| columns | integer | No | 3 | 分割する列数(1〜100) |
|
||||
| rows | integer | No | 3 | 分割する行数(1〜100) |
|
||||
| tileWidth | integer | No | - | タイルの幅(ピクセル、最小10)。`tileWidth`と`tileHeight`の両方が設定されている場合、`columns`より優先されます。 |
|
||||
| tileHeight | integer | No | - | タイルの高さ(ピクセル、最小10)。`tileWidth`と`tileHeight`の両方が設定されている場合、`rows`より優先されます。 |
|
||||
| outputFormat | string | No | `"original"` | タイルの出力フォーマット: `original`, `png`, `jpg`, `webp`, `avif`, `jxl` |
|
||||
| quality | number | No | 90 | 非可逆フォーマットの出力品質(1〜100) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/split \
|
||||
-F "file=@large-image.png" \
|
||||
-F 'settings={"columns":3,"rows":3,"outputFormat":"png"}' \
|
||||
--output split-tiles.zip
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
レスポンスは`Content-Type: application/zip`とともにZIPファイルとして直接ストリーミングされます。ファイル名は`split-<jobId>.zip`のパターンに従います。
|
||||
|
||||
ZIP内の各タイルは`<originalBaseName>_r<row>_c<col>.<ext>`という名前になります(例: `photo_r1_c1.png`, `photo_r2_c3.webp`)。
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 単一の画像ファイルを受け付けます。
|
||||
- HEIC、RAW、PSD、SVGの入力フォーマットに対応します(自動的にデコードされます)。
|
||||
- `tileWidth`と`tileHeight`の両方が指定された場合、`columns`/`rows`より優先されます。グリッド寸法は`ceil(imageWidth / tileWidth)`および`ceil(imageHeight / tileHeight)`として計算されます。
|
||||
- 画像の寸法が均等に割り切れない場合、端のタイル(最右列、最下行)は指定したタイルサイズより小さくなることがあります。
|
||||
- グリッドの最大サイズは100x100(10,000タイル)に制限されています。
|
||||
- レスポンスはZIPを直接ストリーミングするため、JSONレスポンスボディはありません。curlでファイルを保存するには`--output`を使用してください。
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
description: "複数の画像を1枚のスプライトシートグリッドに結合し、フレームのメタデータを付与します。"
|
||||
i18n_source_hash: 1938d7fb100d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: febba953c6c4
|
||||
---
|
||||
|
||||
# Sprite Sheet {#sprite-sheet}
|
||||
|
||||
複数の画像を1枚のスプライトシートグリッドに結合します。各画像は最初の画像の寸法に合わせてリサイズされ、グリッドに配置されます。フレームごとの座標メタデータとともにスプライトシート画像を返します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/sprite-sheet`
|
||||
|
||||
2枚以上の画像ファイルとJSON形式の`settings`フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| columns | integer | No | `4` | グリッドの列数(1〜16) |
|
||||
| padding | integer | No | `0` | セル間の余白(ピクセル、0〜64) |
|
||||
| background | string | No | `"#ffffff"` | 背景の16進カラー |
|
||||
| format | string | No | `"png"` | 出力フォーマット: `png`, `webp`, または`jpeg` |
|
||||
| quality | integer | No | `90` | 出力品質(1〜100) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/sprite-sheet \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@frame1.png" \
|
||||
-F "file=@frame2.png" \
|
||||
-F "file=@frame3.png" \
|
||||
-F "file=@frame4.png" \
|
||||
-F 'settings={"columns": 2, "padding": 4, "format": "png"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/sprite-sheet.png",
|
||||
"originalSize": 120000,
|
||||
"processedSize": 95000,
|
||||
"frames": [
|
||||
{ "index": 0, "left": 0, "top": 0, "width": 128, "height": 128 },
|
||||
{ "index": 1, "left": 132, "top": 0, "width": 128, "height": 128 },
|
||||
{ "index": 2, "left": 0, "top": 132, "width": 128, "height": 128 },
|
||||
{ "index": 3, "left": 132, "top": 132, "width": 128, "height": 128 }
|
||||
],
|
||||
"cols": 2,
|
||||
"rows": 2,
|
||||
"cellWidth": 128,
|
||||
"cellHeight": 128,
|
||||
"canvasWidth": 260,
|
||||
"canvasHeight": 260
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 2〜64枚の画像を受け付けます。すべての画像は、最初にアップロードした画像の寸法に合わせてリサイズされます。
|
||||
- `frames`配列は、出力内の各フレームの正確なピクセル座標を提供し、CSSスプライト定義やゲームエンジンのフレームマップに利用できます。
|
||||
- 行数は、画像数と`columns`の値から自動的に計算されます。
|
||||
- セル間に間隔を設けるには`padding`パラメータを使用します。`background`の色は、余白領域や末尾の空セルに表示されます。
|
||||
- HEIC、RAW、PSD、SVGの入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
description: "画像を横並び、縦積み、またはグリッド状に結合し、配置・間隔・境界線・リサイズモードを制御できます。"
|
||||
i18n_source_hash: 39333210505a
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e7e483233339
|
||||
---
|
||||
|
||||
# Stitch / Combine {#stitch-combine}
|
||||
|
||||
複数の画像を横並び、縦積み、またはグリッド状に結合します。配置、間隔、境界線、角丸、複数のリサイズモードに対応します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/stitch`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| direction | string | No | `"horizontal"` | レイアウト方向: `horizontal`, `vertical`, `grid` |
|
||||
| gridColumns | integer | No | 2 | directionが`grid`のときの列数(2〜100) |
|
||||
| resizeMode | string | No | `"fit"` | 画像のリサイズ方法: `fit`, `original`, `stretch`, `crop` |
|
||||
| alignment | string | No | `"center"` | 交差軸方向の配置: `start`, `center`, `end` |
|
||||
| gap | number | No | 0 | 画像間の間隔(ピクセル、0〜1000) |
|
||||
| border | number | No | 0 | 外周の境界線の幅(ピクセル、0〜500) |
|
||||
| cornerRadius | number | No | 0 | 最終出力に適用する角丸半径(0〜500) |
|
||||
| backgroundColor | string | No | `"#FFFFFF"` | 背景/境界線の色(16進、例: `#FF0000`) |
|
||||
| format | string | No | `"png"` | 出力フォーマット: `png`, `jpeg`, `webp`, `avif`, `jxl` |
|
||||
| quality | number | No | 90 | 出力品質(1〜100) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/stitch \
|
||||
-F "file=@image1.png" \
|
||||
-F "file=@image2.png" \
|
||||
-F "file=@image3.png" \
|
||||
-F 'settings={"direction":"horizontal","resizeMode":"fit","gap":10,"backgroundColor":"#FFFFFF","format":"png"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/stitch.png",
|
||||
"originalSize": 1234567,
|
||||
"processedSize": 987654
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 少なくとも2枚の画像が必要です。multipartリクエストで複数の画像ファイルをアップロードしてください。
|
||||
- HEIC、RAW、PSD、SVGの入力フォーマットに対応します(自動的にデコードされます)。
|
||||
- リサイズモード:
|
||||
- `fit` - 結合軸方向の最小寸法に合わせて画像をスケールします。
|
||||
- `original` - 元のサイズを維持します(端が不揃いになることがあります)。
|
||||
- `stretch` - アスペクト比を維持せず、最小寸法に合わせて強制的に揃えます。
|
||||
- `crop` - 最小寸法に合わせて画像をカバークロップします。
|
||||
- `grid`モードでは、セルはすべての画像の寸法の中央値にサイズ調整されます。
|
||||
- `cornerRadius`は個々の画像ではなく、最終出力全体に適用されます。
|
||||
- キャンバスサイズは、メモリ枯渇を防ぐために`MAX_CANVAS_PIXELS`サーバー設定によって制限されます。
|
||||
@@ -0,0 +1,113 @@
|
||||
---
|
||||
description: "プライバシー保護とファイルサイズ削減のため、画像からEXIF、GPS、ICC、XMPのメタデータを削除します。"
|
||||
i18n_source_hash: e89147734fd0
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5d65887b5d1c
|
||||
---
|
||||
|
||||
# Remove Metadata {#remove-metadata}
|
||||
|
||||
画像からEXIF、GPS、ICCカラープロファイル、XMPメタデータを削除します。プライバシー保護(GPS座標やカメラ情報の除去)やファイルサイズの削減に役立ちます。
|
||||
|
||||
## API Endpoints {#api-endpoints}
|
||||
|
||||
### Strip Metadata {#strip-metadata}
|
||||
|
||||
`POST /api/v1/tools/image/strip-metadata`
|
||||
|
||||
画像を処理し、選択したメタデータを削除したクリーンなバージョンを返します。
|
||||
|
||||
### Inspect Metadata {#inspect-metadata}
|
||||
|
||||
`POST /api/v1/tools/image/strip-metadata/inspect`
|
||||
|
||||
画像を変更せずに、解析済みメタデータをJSONで返します。削除前にどのメタデータが存在するかをプレビューするのに便利です。
|
||||
|
||||
## Parameters (Strip) {#parameters-strip}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| stripExif | boolean | No | `false` | EXIFデータ(カメラ設定、日付など)を削除します |
|
||||
| stripGps | boolean | No | `false` | GPS/位置情報のみを削除します |
|
||||
| stripIcc | boolean | No | `false` | ICCカラープロファイルを削除します |
|
||||
| stripXmp | boolean | No | `false` | XMPメタデータ(Adobe、IPTC)を削除します |
|
||||
| stripAll | boolean | No | `true` | すべてのメタデータを一括削除します |
|
||||
|
||||
`stripAll`が`true`の場合、個別のフラグより優先され、すべてが削除されます。
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
すべてのメタデータを削除:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"stripAll": true}'
|
||||
```
|
||||
|
||||
GPSデータのみを削除(カメラ情報とカラープロファイルは維持):
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"stripAll": false, "stripGps": true}'
|
||||
```
|
||||
|
||||
画像を変更せずにメタデータを確認:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata/inspect \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg"
|
||||
```
|
||||
|
||||
## Example Response (Strip) {#example-response-strip}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2380000
|
||||
}
|
||||
```
|
||||
|
||||
## Example Response (Inspect) {#example-response-inspect}
|
||||
|
||||
```json
|
||||
{
|
||||
"filename": "photo.jpg",
|
||||
"fileSize": 2450000,
|
||||
"exif": {
|
||||
"Make": "Canon",
|
||||
"Model": "EOS R5",
|
||||
"DateTimeOriginal": "2024:03:15 14:30:00",
|
||||
"ExposureTime": "1/250",
|
||||
"FNumber": 2.8,
|
||||
"ISO": 400
|
||||
},
|
||||
"gps": {
|
||||
"GPSLatitudeRef": "N",
|
||||
"GPSLatitude": [37, 46, 30],
|
||||
"_latitude": 37.775,
|
||||
"_longitude": -122.4183
|
||||
},
|
||||
"icc": {
|
||||
"Profile Size": "3144 bytes",
|
||||
"Color Space": "RGB",
|
||||
"Description": "sRGB IEC61966-2.1"
|
||||
},
|
||||
"xmp": {
|
||||
"CreatorTool": "Adobe Photoshop 25.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 画像は削除後に元のフォーマットで再エンコードされます。JPEGは品質90のmozjpeg、PNGは圧縮レベル9、WebPは品質85を使用します。
|
||||
- 画像が非sRGBプロファイルでタグ付けされていた場合、ICCプロファイルの削除により微妙な色ずれが生じることがあります。色の正確さが重要な場合は`stripIcc: false`を使用してください。
|
||||
- inspectエンドポイントは、利便性のためGPS座標を(アンダースコア接頭辞付きの)10進の緯度/経度値に解析します。
|
||||
- 対応する入力フォーマット: JPEG、PNG、WebP、AVIF、TIFF、GIF。
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
description: "SVGファイルをカスタム解像度とDPIでPNG、JPEG、WebP、AVIF、TIFF、GIF、HEIF、JXLに変換します。バッチ対応。"
|
||||
i18n_source_hash: cf36830f8797
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 43e1f6049aa4
|
||||
---
|
||||
|
||||
# SVG to Raster {#svg-to-raster}
|
||||
|
||||
SVGファイルを、カスタム解像度とDPIでラスター画像フォーマット(PNG、JPEG、WebP、AVIF、TIFF、GIF、HEIF、JXL)に変換します。複数のSVGのバッチ変換にも対応します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/svg-to-raster`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | No | - | 目標の幅(ピクセル、1〜65536)。片方の寸法のみ設定した場合はアスペクト比を維持します。 |
|
||||
| height | integer | No | - | 目標の高さ(ピクセル、1〜65536)。片方の寸法のみ設定した場合はアスペクト比を維持します。 |
|
||||
| dpi | integer | No | 300 | レンダリングDPI。ラスタライズの基準となる密度を制御します(36〜2400) |
|
||||
| quality | number | No | 90 | 非可逆フォーマットの出力品質(1〜100) |
|
||||
| backgroundColor | string | No | `"#00000000"` | 背景色(16進、6文字または8文字。8文字はアルファを含む) |
|
||||
| outputFormat | string | No | `"png"` | 出力フォーマット: `png`, `jpg`, `webp`, `avif`, `tiff`, `gif`, `heif`, `jxl` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/svg-to-raster \
|
||||
-F "file=@logo.svg" \
|
||||
-F 'settings={"width":1024,"dpi":300,"outputFormat":"png","backgroundColor":"#FFFFFF"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/logo.png",
|
||||
"previewUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/preview.webp",
|
||||
"originalSize": 12345,
|
||||
"processedSize": 67890
|
||||
}
|
||||
```
|
||||
|
||||
## Batch Endpoint {#batch-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/svg-to-raster/batch`
|
||||
|
||||
1回のリクエストで複数のSVGファイルを変換します。ZIPアーカイブを返します。
|
||||
|
||||
### Additional Batch Parameters {#additional-batch-parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| clientJobId | string | No | - | 進捗追跡用にクライアントが指定する任意のジョブID(最大128文字) |
|
||||
|
||||
### Batch Example Request {#batch-example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/svg-to-raster/batch \
|
||||
-F "file=@icon1.svg" \
|
||||
-F "file=@icon2.svg" \
|
||||
-F "file=@icon3.svg" \
|
||||
-F 'settings={"width":512,"outputFormat":"png","dpi":150}'
|
||||
```
|
||||
|
||||
### Batch Response {#batch-response}
|
||||
|
||||
バッチエンドポイントは、以下のヘッダーとともにZIPファイルを直接ストリーミングします:
|
||||
- `Content-Type: application/zip`
|
||||
- `X-Job-Id: <jobId>`
|
||||
- `X-File-Results: <url-encoded JSON mapping of index to filename>`
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- SVGおよびSVGZファイルのみを受け付けます(拡張子だけでなく内容も検証します)。SVGZは自動的に展開されます。
|
||||
- SVGの内容は、XSSや外部リソースの読み込みを防ぐため、レンダリング前にサニタイズされます。
|
||||
- `dpi`設定は、SVGをラスタライズする密度を制御します。DPIを高くすると、同じSVGビューポートからより大きなピクセル寸法が生成されます。
|
||||
- `width`と`height`の両方を指定した場合、画像は`fit: inside`を使用してリサイズされます(範囲内でアスペクト比を維持します)。
|
||||
- ブラウザがネイティブに表示できないフォーマット(TIFF、HEIF)については、レスポンスに`previewUrl`が含まれます。プレビューは1200pxのWebPサムネイルです。
|
||||
- デフォルトの背景`#00000000`は完全に透明です。白い背景(透過をサポートしないJPEG出力で便利)にするには`#FFFFFF`に設定してください。
|
||||
- バッチ処理は`MAX_BATCH_SIZE`サーバー設定に従い、パフォーマンスのため並行ワーカーを使用します。
|
||||
- バッチ操作の進捗は`/api/v1/jobs/:jobId/progress`のSSEで追跡できます。
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
description: "ドロップシャドウと背景ボックスを備えたスタイル付きテキストオーバーレイを追加します。"
|
||||
i18n_source_hash: 9f8e697188fc
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3a2c40ceb577
|
||||
---
|
||||
|
||||
# Text Overlay {#text-overlay}
|
||||
|
||||
画像に、オプションのドロップシャドウと半透明の背景ボックスを備えたスタイル付きテキストを追加します。写真のタイトル、キャプション、注釈に適しています。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/text-overlay`
|
||||
|
||||
画像ファイルとJSON形式の`settings`フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Yes | - | オーバーレイするテキスト(1〜500文字) |
|
||||
| fontSize | number | No | `48` | フォントサイズ(ピクセル、8〜200) |
|
||||
| color | string | No | `"#FFFFFF"` | テキストの色(16進形式、`#RRGGBB`) |
|
||||
| position | string | No | `"bottom"` | 垂直方向の配置: `top`, `center`, `bottom` |
|
||||
| backgroundBox | boolean | No | `false` | テキストの背後に半透明の背景矩形を表示します |
|
||||
| backgroundColor | string | No | `"#000000"` | 背景ボックスの色(16進形式、`#RRGGBB`) |
|
||||
| shadow | boolean | No | `true` | テキストの背後にドロップシャドウを適用します |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/text-overlay \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"text": "Hello World", "fontSize": 64, "color": "#FFFFFF", "position": "bottom", "shadow": true}'
|
||||
```
|
||||
|
||||
背景ボックス付き:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/text-overlay \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"text": "Caption", "fontSize": 36, "position": "bottom", "backgroundBox": true, "backgroundColor": "#000000"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2470000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- テキストは常に画像内で水平方向に中央揃えされます。
|
||||
- ドロップシャドウは、2pxのオフセットと3pxのぼかしを、70%の黒の不透明度で使用します。
|
||||
- 背景ボックスは画像の全幅にわたり不透明度70%で表示され、高さはフォントサイズに比例します(1.8倍)。
|
||||
- テキストはSVGコンポジットでレンダリングされるため、システムのデフォルトのsans-serifフォントが使用されます。
|
||||
- テキスト内のXML特殊文字は安全にエスケープされます。
|
||||
- 出力フォーマットは入力フォーマットに一致します。HEIC、RAW、PSD、SVGの入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
description: "偽の透過PNGをAIマッティング(BiRefNet)で修正して本物のアルファを生成し、エッジのフリンジ除去も行います。"
|
||||
i18n_source_hash: 7eb748b80f93
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 88c95b97a32d
|
||||
---
|
||||
|
||||
# PNG Transparency Fixer {#png-transparency-fixer}
|
||||
|
||||
偽の透過PNGをワンクリックで修正します。AIマッティング(BiRefNet HR Mattingモデル)を用いて本物のアルファ透過を生成し、後処理のフリンジ除去でエッジをクリーンアップします。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/transparency-fixer`
|
||||
|
||||
**処理:** 非同期(202を返し、`/api/v1/jobs/{jobId}/progress`をSSEでポーリングしてステータスを取得)
|
||||
|
||||
**モデルバンドル:** `background-removal`(4〜5 GB)
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(multipart) |
|
||||
| defringe | number | No | `30` | フリンジ除去の強度(0〜100)。エッジ周辺の半透明なフリンジピクセルを除去します |
|
||||
| outputFormat | string | No | `"png"` | 出力フォーマット: `png`または`webp` |
|
||||
| removeWatermark | boolean | No | `false` | ウォーターマーク除去の前処理(メディアンフィルター)を適用します |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/transparency-fixer \
|
||||
-F "file=@fake-transparent.png" \
|
||||
-F 'settings={"defringe":40,"outputFormat":"png"}'
|
||||
```
|
||||
|
||||
## Response {#response}
|
||||
|
||||
### Initial Response (202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### Progress (SSE at `/api/v1/jobs/{jobId}/progress`) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Processing transparency...","percent":50}
|
||||
```
|
||||
|
||||
### Final Result (via SSE) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/fake-transparent_fixed.png",
|
||||
"originalSize": 180000,
|
||||
"processedSize": 150000,
|
||||
"filename": "fake-transparent.png"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- `background-removal`モデルバンドルのインストールが必要です(4〜5 GB)。
|
||||
- 高品質なアルファマッティングの主モデルとして`birefnet-hr-matting`を使用します。HRモデルがメモリ不足になった場合は`birefnet-general`にフォールバックします。
|
||||
- `defringe`オプションは、AIマッティングが髪、毛、細かなエッジの周囲にときどき残す半透明のフリンジピクセルを除去します。アルファチャンネルをぼかし、信頼度の低いピクセルをゼロにすることで機能します。
|
||||
- `removeWatermark`オプションは、メディアンフィルターの前処理ステップを適用します。これは基本的なウォーターマーク低減であり、専用のウォーターマーク除去ツールではありません。
|
||||
- 出力はPNGまたは可逆WebPのみです(どちらもアルファ透過をサポートします)。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDRの入力フォーマットに、自動デコードで対応します。
|
||||
@@ -0,0 +1,83 @@
|
||||
---
|
||||
description: "Real-ESRGANのAI超解像で細部を保ちながら画像を2〜4倍に拡大します。"
|
||||
i18n_source_hash: 150032e99476
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 98f9f12f031b
|
||||
---
|
||||
|
||||
# Image Upscaling {#image-upscaling}
|
||||
|
||||
Real-ESRGANを用いたAI超解像による高精細化です。細部を保ちながら画像を2〜4倍に拡大します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/upscale`
|
||||
|
||||
**処理:** 非同期(202を返し、`/api/v1/jobs/{jobId}/progress`をSSEでポーリングしてステータスを取得)
|
||||
|
||||
**モデルバンドル:** `upscale-enhance`(5〜6 GB)
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 画像ファイル(multipart) |
|
||||
| scale | number | No | `2` | 拡大倍率(例: 2, 3, 4) |
|
||||
| model | string | No | `"auto"` | 使用するモデル(例: `auto`、特定のモデル名) |
|
||||
| faceEnhance | boolean | No | `false` | 拡大時に顔補正を適用します |
|
||||
| denoise | number | No | `0` | ノイズ除去の強度(0 = 無効) |
|
||||
| format | string | No | `"auto"` | 出力フォーマット: `auto`, `png`, `jpg`, `webp`, `tiff`, `gif`, `avif`, `heic`, `heif`, `jxl` |
|
||||
| quality | number | No | `95` | 出力品質(1〜100) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/upscale \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"scale":4,"model":"auto","faceEnhance":true,"format":"png"}'
|
||||
```
|
||||
|
||||
## Response {#response}
|
||||
|
||||
### Initial Response (202 Accepted) {#initial-response-202-accepted}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
### Progress (SSE at `/api/v1/jobs/{jobId}/progress`) {#progress-sse-at-api-v1-jobs-jobid-progress}
|
||||
|
||||
```
|
||||
event: progress
|
||||
data: {"phase":"processing","stage":"Upscaling...","percent":60}
|
||||
```
|
||||
|
||||
### Final Result (via SSE) {#final-result-via-sse}
|
||||
|
||||
```json
|
||||
{
|
||||
"phase": "complete",
|
||||
"percent": 100,
|
||||
"result": {
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/{jobId}/photo_4x.png",
|
||||
"previewUrl": "/api/v1/download/{jobId}/preview.webp",
|
||||
"originalSize": 120000,
|
||||
"processedSize": 2400000,
|
||||
"width": 4096,
|
||||
"height": 4096,
|
||||
"method": "realesrgan-x4plus"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- `upscale-enhance`モデルバンドルのインストールが必要です(5〜6 GB)。
|
||||
- 利用可能な場合はReal-ESRGANを使用します。AIモデルが利用できない場合はLanczos補間にフォールバックします。
|
||||
- `faceEnhance`オプションは、より良い顔品質のため、拡大時にGFPGANの顔復元を適用します。
|
||||
- ブラウザでプレビューできない出力フォーマット(HEIC、JXL、TIFF)については、メイン出力とあわせてWebPプレビューが生成されます。
|
||||
- HEIC/HEIF、RAW、TGA、PSD、EXR、HDRの入力フォーマットに、自動デコードで対応します。
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
description: "ラスター画像をSVGに変換します。白黒(potrace)とフルカラーのマルチレイヤーベクター化に対応します。"
|
||||
i18n_source_hash: f3e4777188ad
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7284f323c58a
|
||||
---
|
||||
|
||||
# Image to SVG {#image-to-svg}
|
||||
|
||||
トレースアルゴリズムを用いてラスター画像をSVGにベクター化します。白黒トレース(potrace)とフルカラーのマルチレイヤーベクター化に対応します。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/vectorize`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| colorMode | string | No | `"bw"` | トレースモード: `bw`(白黒)または`color`(マルチカラーレイヤー) |
|
||||
| threshold | number | No | 128 | 白黒モードの明度しきい値(0〜255)。これを下回るピクセルは黒になります。 |
|
||||
| colorPrecision | number | No | 6 | カラーモードの色量子化精度(1〜16)。値が高いほど、より明確な色レイヤーが生成されます。 |
|
||||
| layerDifference | number | No | 6 | カラーモードにおけるレイヤー間の最小色差(1〜128) |
|
||||
| filterSpeckle | number | No | 4 | トレースする形状の最小面積(ピクセル、1〜256)。ノイズや斑点を除去します。 |
|
||||
| pathMode | string | No | `"spline"` | パスの平滑化: `none`(ギザギザ), `polygon`(直線セグメント), `spline`(滑らかな曲線) |
|
||||
| cornerThreshold | number | No | 60 | カラーモードにおける角検出の角度しきい値(0〜180度) |
|
||||
| invert | boolean | No | `false` | トレース前に画像を反転します(白黒を入れ替え) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/vectorize \
|
||||
-F "file=@logo.png" \
|
||||
-F 'settings={"colorMode":"bw","threshold":128,"filterSpeckle":4,"pathMode":"spline"}'
|
||||
```
|
||||
|
||||
### Color Vectorization {#color-vectorization}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/vectorize \
|
||||
-F "file=@illustration.png" \
|
||||
-F 'settings={"colorMode":"color","colorPrecision":8,"layerDifference":6,"filterSpeckle":4}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/logo.svg",
|
||||
"originalSize": 45678,
|
||||
"processedSize": 12345
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 入力フォーマットに関係なく、出力は常にSVGファイルです。
|
||||
- HEIC、RAW、PSD、SVGの入力フォーマットに対応します(トレース前に自動的にラスターへデコードされます)。
|
||||
- 白黒モードはpotraceアルゴリズムを使用します。画像はまずグレースケールに変換され、トレース前に純粋な白黒にしきい値処理されます。
|
||||
- カラーモードはマルチレイヤー方式を使用します。画像は色レイヤーに量子化され、各レイヤーが個別にトレースされてSVG出力に積み重ねられます。
|
||||
- `filterSpeckle`の値を低くするとより多くの細部が保持されますが、パスが増えてSVGファイルが大きくなります。
|
||||
- `pathMode`設定はファイルサイズに大きく影響します。`none`は最も多くのパスを生成し、`spline`は最も滑らかな(通常は最も小さい)出力を生成します。
|
||||
- ロゴやアイコンで最良の結果を得るには、クリーンで高コントラストな入力で白黒モードを使用してください。写真やイラストには、より高い`colorPrecision`でカラーモードを使用してください。
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: "強度、色、位置を調整できるビネット効果を追加します。"
|
||||
i18n_source_hash: 0b9795fea2eb
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a094923210a6
|
||||
---
|
||||
|
||||
# Vignette {#vignette}
|
||||
|
||||
画像の縁を暗くしたり色付けしたりするビネット効果を追加します。強度、色、半径、柔らかさ、丸み、中心位置を調整できます。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/vignette`
|
||||
|
||||
画像ファイルとJSON形式の`settings`フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| strength | number | No | `0.5` | ビネットの不透明度(0.1〜1) |
|
||||
| color | string | No | `"#000000"` | ビネットの16進カラー |
|
||||
| radius | integer | No | `70` | 半対角線に対する外側半径の割合(0〜100) |
|
||||
| softness | integer | No | `50` | フェザーの柔らかさ(0〜100)。値が高いほどより緩やかにフェードします |
|
||||
| roundness | integer | No | `100` | 形状: 100 = 円、0 = 画像のアスペクト比に合わせた楕円 |
|
||||
| centerX | integer | No | `50` | 水平方向の中心位置の割合(0〜100) |
|
||||
| centerY | integer | No | `50` | 垂直方向の中心位置の割合(0〜100) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/vignette \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"strength": 0.7, "radius": 60, "softness": 70}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2410000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- `radius`を小さくすると画像のより広い範囲が暗くなり、大きくするとビネットが最も外側の縁に限定されます。
|
||||
- 創造的なビネット効果には、黒以外の`color`(例: 白やセピア調)を使用してください。
|
||||
- `centerX`と`centerY`を調整すると、クリアな領域を中心からずらして配置できます。フレームの中央にない被写体に注目を集めたい場合に便利です。
|
||||
- 出力フォーマットは入力フォーマットに一致します。HEIC、RAW、PSD、SVGの入力は処理前に自動的にデコードされます。
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "ロゴや画像を、位置・不透明度・スケールを設定できるウォーターマークとして重ねます。"
|
||||
i18n_source_hash: c73ab0ef8ab9
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8f6fc69bb054
|
||||
---
|
||||
|
||||
# Image Watermark {#image-watermark}
|
||||
|
||||
ロゴや別の画像を、ベース画像上にウォーターマークとして重ねます。ウォーターマークはベース画像の幅に対して相対的にスケールされ、角または中央に配置されます。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/watermark-image`
|
||||
|
||||
**2枚の**画像ファイルとJSON形式の`settings`フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| position | string | No | `"bottom-right"` | ウォーターマークの配置: `center`, `top-left`, `top-right`, `bottom-left`, `bottom-right` |
|
||||
| opacity | number | No | `50` | ウォーターマークの不透明度の割合(0〜100) |
|
||||
| scale | number | No | `25` | メイン画像の幅に対するウォーターマークの幅の割合(1〜100) |
|
||||
|
||||
### File Fields {#file-fields}
|
||||
|
||||
| Field Name | Required | Description |
|
||||
|------------|----------|-------------|
|
||||
| file | Yes | メイン/ベース画像 |
|
||||
| watermark | Yes | ウォーターマーク/ロゴ画像 |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/watermark-image \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F "watermark=@logo.png" \
|
||||
-F 'settings={"position": "bottom-right", "opacity": 60, "scale": 20}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2520000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 両方の画像が検証・デコードされます(HEIC、RAW、PSD、SVGに対応)。
|
||||
- ウォーターマークは、その幅がメイン画像の幅の`scale`%になるよう、比例的にリサイズされます。
|
||||
- 不透明度は、`dest-in`ブレンディングで合成されたアルファマスクを介して適用されます。
|
||||
- 角の位置では、画像の縁から20pxの余白が設けられます。
|
||||
- ウォーターマーク画像が透過を持つ場合(例: PNGロゴ)、合成時に透過は保持されます。
|
||||
- 処理前に、両方の画像でEXIF方向が自動適用されます。
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
description: "位置、不透明度、回転、タイリングを設定できるテキストウォーターマークを追加します。"
|
||||
i18n_source_hash: b80f12f410e4
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 472dcfef6f9f
|
||||
---
|
||||
|
||||
# Text Watermark {#text-watermark}
|
||||
|
||||
画像にテキストウォーターマークのオーバーレイを追加します。角/中央への単一配置、または画像全体へのタイル状の繰り返しに対応し、フォントサイズ、色、不透明度、回転を設定できます。
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/watermark-text`
|
||||
|
||||
画像ファイルとJSON形式の`settings`フィールドを含むmultipartフォームデータを受け付けます。
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Yes | - | ウォーターマークのテキスト(1〜500文字) |
|
||||
| fontSize | number | No | `48` | フォントサイズ(ピクセル、8〜1000) |
|
||||
| color | string | No | `"#000000"` | テキストの色(16進形式、`#RRGGBB`) |
|
||||
| opacity | number | No | `50` | テキストの不透明度の割合(0〜100) |
|
||||
| position | string | No | `"center"` | 配置: `center`, `top-left`, `top-right`, `bottom-left`, `bottom-right`, `tiled` |
|
||||
| rotation | number | No | `0` | テキストの回転角度(度、-360〜360) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/watermark-text \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"text": "SAMPLE", "fontSize": 64, "opacity": 30, "position": "center", "rotation": -30}'
|
||||
```
|
||||
|
||||
画像全体へのタイル状ウォーターマーク:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/image/watermark-text \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@photo.jpg" \
|
||||
-F 'settings={"text": "DRAFT", "fontSize": 36, "opacity": 20, "position": "tiled", "rotation": -45}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2480000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- ウォーターマークはSVGテキストとしてレンダリングされ画像に合成されるため、出力品質が保たれます。
|
||||
- タイルモードは、フォントサイズに基づいてテキスト要素の間隔を決めます(水平6倍、垂直4倍の間隔)。最大500要素に制限されます。
|
||||
- 角の位置では、縁からの余白はフォントサイズと同じになります。
|
||||
- 使用されるフォントはシステムのデフォルトのsans-serifフォントです。
|
||||
- テキスト内のXML特殊文字(`&`, `<`, `>`, `"`, `'`)は安全にエスケープされます。
|
||||
- 出力フォーマットは入力フォーマットに一致します。HEIC、RAW、PSD、SVGの入力は処理前に自動的にデコードされます。
|
||||
Reference in New Issue
Block a user