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,87 @@
|
||||
---
|
||||
description: "Susun gambar berlapis dengan posisi, opasitas, dan mode blend untuk komposit."
|
||||
i18n_source_hash: c5d09eb13fde
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ce63a02afd4f
|
||||
---
|
||||
|
||||
# Komposisi Gambar {#image-composition}
|
||||
|
||||
Susun gambar overlay di atas gambar dasar dengan posisi, opasitas, dan mode blend yang dapat dikonfigurasi. Berguna untuk mengomposit logo, grafik, atau menggabungkan beberapa gambar.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/image/compose`
|
||||
|
||||
Menerima data formulir multipart dengan **dua** file gambar dan field JSON `settings`.
|
||||
|
||||
## Parameter {#parameters}
|
||||
|
||||
| Parameter | Tipe | Wajib | Default | Deskripsi |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| x | number | Tidak | `0` | Offset horizontal overlay dari sudut kiri atas dalam piksel (min 0) |
|
||||
| y | number | Tidak | `0` | Offset vertikal overlay dari sudut kiri atas dalam piksel (min 0) |
|
||||
| opacity | number | Tidak | `100` | Persentase opasitas overlay (0 hingga 100) |
|
||||
| blendMode | string | Tidak | `"over"` | Mode blend komposit |
|
||||
|
||||
### Mode Blend {#blend-modes}
|
||||
|
||||
| Nilai | Deskripsi |
|
||||
|-------|-------------|
|
||||
| `over` | Overlay normal (default) |
|
||||
| `multiply` | Menggelapkan dengan mengalikan nilai piksel |
|
||||
| `screen` | Mencerahkan dengan membalik, mengalikan, lalu membalik lagi |
|
||||
| `overlay` | Menggabungkan multiply dan screen berdasarkan kecerahan dasar |
|
||||
| `darken` | Pertahankan piksel yang lebih gelap dari setiap lapisan |
|
||||
| `lighten` | Pertahankan piksel yang lebih terang dari setiap lapisan |
|
||||
| `hard-light` | Overlay kontras kuat |
|
||||
| `soft-light` | Overlay kontras halus |
|
||||
| `difference` | Perbedaan absolut antar lapisan |
|
||||
| `exclusion` | Mirip dengan difference tetapi kontras lebih rendah |
|
||||
|
||||
### Field File {#file-fields}
|
||||
|
||||
| Nama Field | Wajib | Deskripsi |
|
||||
|------------|----------|-------------|
|
||||
| file | Ya | Gambar dasar/latar belakang |
|
||||
| overlay | Ya | Gambar overlay/latar depan |
|
||||
|
||||
## Contoh Permintaan {#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"}'
|
||||
```
|
||||
|
||||
Menggunakan mode blend multiply:
|
||||
|
||||
```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"}'
|
||||
```
|
||||
|
||||
## Contoh Respons {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/background.jpg",
|
||||
"originalSize": 3200000,
|
||||
"processedSize": 3450000
|
||||
}
|
||||
```
|
||||
|
||||
## Catatan {#notes}
|
||||
|
||||
- Kedua gambar divalidasi dan didekode (HEIC, RAW, PSD, SVG didukung) sebelum komposit.
|
||||
- Overlay ditempatkan pada koordinat piksel tepat yang ditentukan oleh `x` dan `y`. Overlay tidak diubah ukurannya agar pas.
|
||||
- Jika opasitas kurang dari 100, masker alfa diterapkan pada overlay sebelum blending.
|
||||
- Overlay dapat melampaui batas gambar dasar (akan dipotong).
|
||||
- Orientasi EXIF diterapkan otomatis pada kedua gambar sebelum diproses.
|
||||
- Dimensi output sesuai dengan dimensi gambar dasar.
|
||||
Reference in New Issue
Block a user