Files
SnapOtter/apps/docs/id/tools/image/image-to-base64.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

3.9 KiB

description, i18n_source_hash, i18n_provenance, i18n_output_hash
description i18n_source_hash i18n_provenance i18n_output_hash
Konversi gambar menjadi data URI base64 untuk disematkan di HTML, CSS, dan lainnya. ba4b8f3b4ece human 227c40249375

Image to Base64

Konversi satu atau lebih gambar menjadi string dan data URI berenkode base64. Mendukung konversi format opsional, kontrol kualitas, dan pengubahan ukuran. Berguna untuk menyematkan gambar langsung di HTML, CSS, JSON, atau template email.

API Endpoint

POST /api/v1/tools/image/image-to-base64

Menerima multipart form data dengan satu atau lebih file gambar dan sebuah field JSON settings opsional.

Parameters

Parameter Type Required Default Description
outputFormat string No "original" Konversi sebelum encoding: original, jpeg, png, webp, avif, jxl
quality number No 80 Kualitas output untuk format lossy (1 hingga 100)
maxWidth number No 0 Lebar maksimum dalam piksel (0 = tanpa pengubahan ukuran, tidak akan memperbesar)
maxHeight number No 0 Tinggi maksimum dalam piksel (0 = tanpa pengubahan ukuran, tidak akan memperbesar)

Example Request

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}'

Beberapa file:

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

{
  "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

Field Type Description
results array Gambar yang berhasil dikonversi
errors array Gambar yang gagal diproses (dengan nama file dan pesan error)

Result Object

Field Type Description
filename string Nama file asli
mimeType string Tipe MIME dari output yang dikodekan
width number Lebar akhir dalam piksel (setelah pengubahan ukuran, jika ada)
height number Tinggi akhir dalam piksel (setelah pengubahan ukuran, jika ada)
originalSize number Ukuran file asli dalam byte
encodedSize number Ukuran string base64 dalam byte
overheadPercent number Persentase perbedaan ukuran vs asli (positif = lebih besar, negatif = lebih kecil)
base64 string Data gambar berenkode base64 mentah
dataUri string Data URI lengkap siap digunakan pada atribut src

Notes

  • Encoding base64 umumnya menaikkan ukuran sekitar 33% dibandingkan file biner. Field overheadPercent menunjukkan perbedaan yang sebenarnya.
  • Ketika outputFormat adalah "original", file HEIC/HEIF dikonversi ke JPEG (karena browser tidak dapat menampilkan HEIC dalam data URI).
  • Opsi maxWidth dan maxHeight mengubah ukuran menggunakan fit: inside dengan withoutEnlargement, sehingga gambar yang lebih kecil dari dimensi yang ditentukan tidak diperbesar.
  • Beberapa file dapat diproses dalam satu permintaan. Setiap file diproses secara independen, dan kegagalan tidak menghalangi file lain untuk berhasil.
  • File SVG diteruskan sebagai image/svg+xml tanpa encoding ulang (kecuali konversi format diminta).
  • Ini adalah endpoint read-only. Ia tidak menghasilkan file yang dapat diunduh atau sebuah jobId. Data base64 dikembalikan langsung di body respons.