Files
SnapOtter/apps/docs/id/tools/image/compose.md
T
SnapOtterandGitHub 4963ab3bbd 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.
2026-07-11 13:52:47 +08:00

88 lines
3.2 KiB
Markdown

---
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.