Cara Saya Membangun Sistem VI — Harmoni Asimetris Antara Desain dan Kode
Berawal dari dua file PNG, ini adalah catatan lengkap pembuatan sistem identitas visual merek secara otomatis menggunakan Python.
1. Apa Itu VI? Mengapa Perlu Dibuat?
VI (Visual Identity — Sistem Identitas Visual) adalah "standar bahasa visual" yang digunakan merek untuk berkomunikasi ke luar. Ini menjawab satu pertanyaan inti: Ketika merek ini muncul di mana saja, seperti apa tampilannya?
Sebuah paket VI lengkap mencakup setidaknya:
| Kategori | Isi |
|---|---|
| Logo utama | Versi latar belakang transparan, versi berbagai warna latar |
| Variasi logo | Horizontal, vertikal, persegi, lingkaran |
| Palet warna | Spesifikasi HEX / RGB / CMYK |
| Aturan tipografi | Font utama/pendukung, rekomendasi ukuran |
| Panduan penggunaan | Ruang bersih, perilaku yang dilarang |
| Contoh aplikasi | Kartu nama, kop surat, avatar media sosial |
Tanpa VI, setiap desainer, insinyur, dan pemasar "berimprovisasi bebas", dan merek perlahan kehilangan konsistensinya. Dengan VI, satu folder memungkinkan siapa saja menghasilkan tampilan merek yang konsisten.
2. Titik Awal: Dua PNG

Analisis struktur Logo:
- Kiri: Simbol pesawat kertas / panah berbentuk A, terdiri dari dua segitiga
- Segitiga utama: warna Teal (
#03dcd0) - Segitiga gelap: mendekati hitam (
#181c20), menciptakan dimensi
- Segitiga utama: warna Teal (
- Kanan: Nama merek "Ascentek" dengan font sans-serif gelap
- Latar belakang: Transparan (RGBA)
3. Ekstraksi Elemen Merek
3.1 Ekstraksi palet warna
python
def get_dominant_colors(img, k=3):
pixels = [px[:3] for px in img.getdata() if px[3] > 0]
small = Image.new('RGB', (len(pixels), 1))
small.putdata(pixels)
pal = small.convert('P', palette=Image.ADAPTIVE, colors=k)
return pal.getpalette()[:k*3]Hasil ekstraksi:
| Peran | HEX | RGB |
|---|---|---|
| Primary | #03dcd0 | 3, 220, 208 |
| Secondary | #204b4c | 32, 75, 76 |
| Dark / Text | #181c20 | 24, 28, 32 |
3.2 Deteksi batas Icon
Pendekatan yang benar: Cari celah terlebar
Celah antara icon dan teks selalu lebih lebar dari celah mana pun di dalam icon.
python
def find_icon_right(img):
return max(gaps, key=width)[start_x]4. Pemilihan Alat
| Alat | Kegunaan | Alasan Memilih |
|---|---|---|
| Python 3 | Bahasa skrip | Lintas platform, ekosistem kaya |
| Pillow (PIL) | Pemrosesan gambar | Pure Python, dukungan RGBA lengkap |
| Montserrat | Font merek | Gaya sesuai logo asli, lisensi SIL |
5. Teknik Inti: Adaptasi Warna
5.1 Adaptasi latar belakang gelap
python
def adapt_dark(img):
for r, g, b, a in data:
if a < 10:
out.append((0, 0, 0, 0)) # Transparan: biarkan
elif r < 80 and g < 80 and b < 80:
out.append((255, 255, 255, a)) # Gelap: ubah jadi putih
else:
out.append((r, g, b, a)) # Teal: pertahankan5.2 Siluet monokrom
python
def silhouette(img, color_rgb):
alpha = img.split()[3]
base = Image.new('RGBA', img.size, color_rgb + (255,))
base.putalpha(alpha)
return base6. Variasi Logo


7. Desain Aplikasi
7.1 Kartu Nama


Kartu nama sudah dihasilkan, namun ukuran dan tata letak adalah hal yang subjektif — berbeda untuk setiap orang, jadi tidak perlu dibahas lebih lanjut.
7.2 Kop Surat (Letterhead)
Spesifikasi: A4 @ 300 dpi = 2480×3508 px. Logo di header harus menggunakan versi yang diadaptasi untuk latar gelap (adapt_dark).
8. Jebakan yang Ditemui Saat Bekerja dengan AI
Jebakan 1: Teks Ganda (Ghost Text)
Solusi: Jangan tambahkan teks di atas logo yang sudah ada teksnya.
Jebakan 2: Logo Tidak Terlihat di Latar Gelap
Solusi: Fungsi adapt_dark — ubah pixel gelap menjadi putih, pertahankan teal.
Jebakan 3: Pemotongan Icon Tidak Lengkap
Solusi: Cari celah terlebar, bukan celah pertama yang ditemukan.
Jebakan 4: Circle Primary Tidak Terlihat
Solusi: Ubah icon menjadi siluet putih terlebih dahulu, lalu tempatkan di latar teal.
Jebakan 5: Estetika Adalah Hal yang Sulit Dinilai Secara Objektif
Keindahan bersifat subjektif — serahkan pada selera masing-masing. Secara pribadi, saya merasa logo pada kartu nama yang dihasilkan agak terlalu besar dibandingkan keseluruhan desain.
9. Struktur Output Akhir
VI-ClaudeVersion/
├── logo/ # Semua variasi Logo (PNG + SVG)
├── applications/ # Contoh aplikasi
├── palette.txt
└── generate_vi.py10. Di Mana Workflow Ini Bisa Digunakan Ulang?
Ubah dua baris pertama di generate_vi.py:
python
LOGO_SRC = 'logo_baru_anda.png'
BRAND = 'NamaMerek'Jalankan python generate_vi.py — semua 28 file dihasilkan sekaligus.
11. Ringkasan Filosofi Inti
Inti dari membangun VI bukan "menggambar gambar yang indah", melainkan menetapkan aturan yang bisa dieksekusi.
- Jangan lakukan secara manual apa yang bisa diotomatisasi
- Baca kebenaran dari pixel
- Tulis keputusan desain sebagai fungsi
- Kode adalah dokumentasi
- Dapat direproduksi dengan satu perintah
Sistem VI terbaik adalah sistem yang bisa digunakan dengan benar oleh siapa saja, tanpa kehadiran pembuatnya.
Easter egg: Logo asli pun sebenarnya dipilih oleh bos dari beberapa versi yang dibuat oleh AI…