Alat Pemilih Warna - Tukar Kod Warna RGB, Hex, CMYK & HSV
Pemilih warna dalam talian percuma dengan penukaran RGB, Hex, CMYK, dan HSV secara segera. Klik spektrum untuk memilih warna secara visual atau masukkan nilai tepat. Salin mana-mana format dengan satu klik untuk reka bentuk web, cetak, dan projek digital.
Pemilih Warna
RGB (0-255)
CMYK (0-100)
Pemilih Warna
Dokumentasi
Apa Yang Boleh Anda Lakukan Dengan Pemilih Warna Ini
Perlukan warna yang tepat untuk projek anda? Pemilih warna ini membolehkan anda memilih, pratonton, dan menukar warna antara format RGB, Hex, CMYK, dan HSV dengan serta-merta. Sama ada anda sedang mengekod laman web, mereka bentuk logo, atau menyediakan fail untuk cetak, anda akan mencari nilai warna yang tepat yang anda perlukan—tiada teka-teki, tiada pertukaran antara alat.
Klik di mana-mana sahaja pada spektrum warna untuk memilih warna, laraskan kecerahan dengan gelangsar, atau masukkan nilai yang tepat terus. Setiap format dikemas kini dalam masa nyata, dan anda boleh menyalin mana-mana kod warna dengan satu klik.
Memahami Model Warna
Projek yang berbeza memerlukan format warna yang berbeza. Berikut adalah fungsi setiap satu dan bila ia digunakan:
RGB (Merah, Hijau, Biru)
RGB berfungsi dengan mencampurkan cahaya merah, hijau, dan biru—sama seperti cara skrin anda memaparkan warna sekarang. Setiap komponen berkisar dari 0 hingga 255:
- RGB(255, 0, 0) = merah tulen
- RGB(0, 255, 0) = hijau tulen
- RGB(0, 0, 255) = biru tulen
- RGB(255, 255, 255) = putih
- RGB(0, 0, 0) = hitam
Bila menggunakan RGB: Mana-mana kerja digital—laman web, aplikasi mudah alih, edit video, atau grafik berasaskan skrin. Ia adalah bahasa asli paparan, itulah sebabnya alat seperti CSS menyokong fungsi rgb() dan rgba() secara langsung. Menurut spesifikasi Modul Warna CSS W3C, RGB adalah model warna asas untuk standard web.
Heksadesimal (Hex)
Kod hex hanyalah nilai RGB yang ditulis dalam asas-16 dan bukannya asas-10. Warna hex kelihatan seperti #FF5733, di mana:
- Simbol
#menandakan ia adalah kod hex - Dua aksara pertama = merah (00-FF)
- Dua di tengah = hijau (00-FF)
- Dua terakhir = biru (00-FF)
#FF0000= merah,#00FF00= hijau,#0000FF= biru
Anda kadang-kadang akan melihat singkatan 3 aksara seperti #F00 dan bukannya #FF0000—ini berfungsi apabila setiap saluran warna mengulangi digit yang sama.
Bila menggunakan Hex: Pembangunan web adalah kes penggunaan utama. CSS sentiasa menyokong notasi hex, dan kebanyakan pembangun mendapati ia lebih cepat ditulis berbanding rgb(). Satu perkara yang perlu dielakkan: lupa simbol # akan merosakkan gaya anda secara senyap, kerana pelayar tidak akan mengenalinya sebagai warna yang sah.
CMYK (Cyan, Magenta, Kuning, Kunci/Hitam)
CMYK adalah model warna yang digunakan oleh pencetak. Tidak seperti RGB (yang menambah cahaya), CMYK menolaknya—mencampurkan dakwat di atas kertas putih untuk mencipta warna:
- Setiap komponen berkisar dari 0% hingga 100%
- CMYK(0, 100, 100, 0) = merah
- CMYK(100, 0, 100, 0) = hijau
- CMYK(0, 0, 0, 100) = dakwat hitam tulen
- CMYK(0, 0, 0, 0) = tiada dakwat (kertas putih kelihatan)
Bila menggunakan CMYK: Mereka bentuk untuk cetak—kad perniagaan, risalah, majalah, pembungkusan. Inilah realiti: banyak warna RGB yang cerah tidak dapat dihasilkan semula dengan dakwat CMYK. Biru elektrik cerah yang anda lihat pada skrin? Ia akan kelihatan lebih pudar apabila dicetak. Pereka profesional sentiasa melihat pratonton penukaran CMYK sebelum menghantar fail ke pencetak untuk mengelakkan kejutan.
HSV (Hue, Ketepuan, Nilai)
HSV memecahkan warna kepada tiga komponen intuitif:
- Hue: Keluarga warna mana (0-360°)—0° adalah merah, 120° adalah hijau, 240° adalah biru
- Ketepuan: Betapa cerah atau kelabu (0-100%)—0% adalah skala kelabu, 100% adalah ketepuan penuh
- Nilai: Betapa cerah atau gelap (0-100%)—0% adalah hitam, 100% adalah kecerahan penuh
Mengapa HSV penting: Ia sepadan dengan cara manusia berfikir tentang warna secara semula jadi. Mahu biru yang lebih gelap? Turunkan nilainya. Mahu biru yang kurang intens? Turunkan ketepuannya. Ini menjadikan HSV ideal untuk pemilih warna interaktif seperti ini, di mana anda memilih hue pada spektrum dan melaraskan kecerahan dengan penggeser.
Rumus Penukaran Warna
Pemilih warna secara automatik menukar antara model warna yang berbeza menggunakan rumus matematik ini:
Penukaran RGB ke Hex
Untuk menukar RGB ke heksadesimal:
- Tukar setiap komponen RGB (0-255) kepada nombor heksadesimal dua digit
- Gabungkan tiga nilai heksadesimal dengan awalan #
Di mana toHex() menukar nombor perpuluhan kepada perwakilan heksadesimal.
Penukaran RGB ke CMYK
Penukaran dari RGB ke CMYK melibatkan langkah-langkah berikut:
- Normalisasi nilai RGB kepada julat 0-1
- Kira komponen kunci hitam (K)
- Kira C, M, dan Y berdasarkan K
Penukaran RGB ke HSV
Menukar RGB ke HSV:
Untuk Hue (H):
0° & \text{jika } \Delta = 0 \\ 60° \times (\frac{G' - B'}{\Delta} \mod 6) & \text{jika } C_{max} = R' \\ 60° \times (\frac{B' - R'}{\Delta} + 2) & \text{jika } C_{max} = G' \\ 60° \times (\frac{R' - G'}{\Delta} + 4) & \text{jika } C_{max} = B' \end{cases}$$ Untuk Ketepuan (S): $$S = \begin{cases} 0 & \text{jika } C_{max} = 0 \\ \frac{\Delta}{C_{max}} \times 100\% & \text{sebaliknya} \end{cases}$$ Untuk Nilai (V): $$V = C_{max} \times 100\%$$ ## Cara Menggunakan Pemilih Warna Tiga cara untuk bekerja dengan warna: klik spektrum, taip nilai tepat, atau laraskan dengan gelongsor. Pilih yang terasa semula jadi untuk aliran kerja anda. ### Pilih Warna Secara Visual Klik di mana-mana pada **spektrum warna** untuk memilih satu rona. Kedudukan mendatar memilih hue (merah, hijau, biru, dll.), manakala kedudukan menegak mengawal ketepuan (hidup vs. pudar). Pratonton dikemas kini serta-merta supaya anda dapat melihat tepat apa yang anda dapatkan. Seret **gelongsor kecerahan** di bawah spektrum untuk membuat warna anda lebih cerah atau gelap. Ini melaraskan komponen "nilai" dalam istilah HSV—ke kiri menjadikan gelap, ke kanan menjadikan cerah. ### Masukkan Nilai Warna Tepat Sudah tahu warna yang anda perlukan? Taip terus: **Format Heks:** Masukkan kod seperti `#FF5733`. Anda boleh sertakan atau tidak sertakan `#`—alat ini mengendalikan kedua-duanya. Berfungsi dengan pintasan 3 digit juga (`#F37`). **Format RGB:** Taip nilai dari 0-255 untuk merah, hijau, dan biru. Jika anda tidak sengaja memasukkan 300, ia akan automatik had pada 255. **Format CMYK:** Masukkan peratusan (0-100) untuk setiap komponen dakwat. Berguna apabila anda memadankan warna dari spesifikasi pereka cetak. Setiap format dikemas kini dalam masa nyata. Tukar kod heks, dan RGB/CMYK diselaraskan secara automatik. ### Salin Kod Warna Klik butang salin (ikon papan klip) di sebelah mana-mana format warna. Anda akan melihat pengesahan "Disalin!" sekilas, kemudian tampalkan nilai di mana-mana anda memerlukannya—fail CSS, perisian reka bentuk, dokumentasi, di mana-mana. **Petua pro:** Apabila bekerja merentasi berbilang fail atau aplikasi, kekalkan alat ini terbuka dalam tab pelayar. Anda boleh merujuk dan menyalin nilai warna dengan cepat tanpa menukar konteks. ## Kegunaan Dunia Sebenar ### Pembangunan Web Anda sedang membina suis mod gelap dan memerlukan variasi warna. Mulakan dengan warna utama jenama anda dalam format hex (contohnya, `#3B82F6`), kemudian gunakan gelongsor kecerahan untuk menjana versi yang lebih gelap untuk latar belakang (`#1E3A8A`) dan versi yang lebih cerah untuk keadaan hover (`#60A5FA`). Salin setiap kod hex terus ke dalam sifat CSS khusus anda. Apabila bekerja dengan ketelusan, dapatkan nilai RGB dan gunakan dalam fungsi `rgba()`. Contohnya, `rgb(59, 130, 246)` menjadi `rgba(59, 130, 246, 0.8)` untuk lapisan dengan opacity 80%. Senario biasa: Pelanggan menyediakan reka bentuk Figma dengan warna yang ditentukan dalam RGB, tetapi anda lebih suka kod hex dalam CSS anda. Tukar di sini daripada mengira secara manual. ### Reka Bentuk Grafik untuk Cetak Inilah di mana CMYK menjadi kritikal. Anda telah mereka bentuk poster yang cerah pada skrin dengan warna RGB, tetapi sebelum menghantar ke pencetak, semak nilai CMYK. Cyan elektrik yang anda pilih (RGB 0, 255, 255) ditukar kepada CMYK(100, 0, 0, 0)—yang kelihatan baik. Tetapi hijau cerah skrin (RGB 0, 255, 0) mungkin berubah dengan ketara apabila dicetak. Aliran kerja profesional: Masukkan warna skrin anda di sini, perhatikan penukaran CMYK, kemudian bandingkan secara visual dalam mod pratonton CMYK perisian reka bentuk anda. Jika warna berubah terlalu banyak, sesuaikan pilihan anda sebelum menyelesaikan reka bentuk. Ini menghalang perbualan "ia kelihatan berbeza pada skrin saya" dengan kedai cetak anda. ### Sistem Reka Bentuk UI/UX Membina sistem reka bentuk memerlukan skala warna yang konsisten. Mulakan dengan warna utama, kemudian cipta 5-10 variasi kecerahan untuk keadaan UI yang berbeza. Gelongsor kecerahan menjadikan ini cepat—tiada pengiraan mental diperlukan. Untuk kebolehcapaian, anda memerlukan kontras yang mencukupi antara teks dan latar belakang. Walaupun alat ini tidak mengira nisbah kontras (anda memerlukan pemeriksa kontras [WCAG](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html) yang khusus untuk itu), ia membantu anda menguji dengan cepat pelbagai ton sehingga anda menemui kombinasi yang berfungsi. Senario sebenar: Butang utama anda menggunakan `#2563EB`, tetapi teks pada latar belakang itu gagal syarat kontras. Cerahkan latar belakang atau gelapkan teks—gunakan pratonton untuk menguji pilihan serta-merta. ### Seni Digital dan Ilustrasi Sedang menghasilkan lukisan digital dan memerlukan keharmonian warna yang konsisten? Pilih hue asas pada spektrum, kemudian cipta variasi dengan melaraskan hanya ketepuan dan kecerahan. Ini mengekalkan palet anda kohesif tanpa lompatan warna rawak. Ramai seniman digital mempunyai pemilih warna terbuka semasa melukis untuk segera mengambil dan menukar warna rujukan. Lihat ton bayang sempurna dalam foto rujukan? Klik di sini (jika anda telah mengekstrak nilai di tempat lain), dapatkan RGB, dan tampalkan ke Photoshop, Procreate, atau Krita. ### Pendidikan dan Eksperimen Warna Ingin memahami bagaimana model warna berkaitan? Pilih mana-mana warna dan perhatikan bagaimana nilainya berubah merentasi RGB, Hex, CMYK, dan HSV. Perhatikan bahawa merah tulen (RGB 255, 0, 0) sama dengan `#FF0000`, tetapi setaranya CMYK adalah 0, 100, 100, 0—nombor yang sangat berbeza yang mewakili warna yang sama. Maklum balas visual ini membantu pelajar memahami mengapa RGB menggunakan percampuran aditif (menggabungkan cahaya) manakala CMYK menggunakan percampuran subtraktif (menggabungkan tinta). Sifat interaktif menjadikan konsep abstrak menjadi ketara. ## Alat Warna Lain Yang Mungkin Anda Perlukan Alat ini fokus pada pemilihan dan penukaran warna individu. Bergantung kepada projek anda, anda mungkin juga memerlukan: **Penjana palét** (Adobe Color, Coolors) apabila anda memerlukan beberapa warna harmoni berdasarkan teori warna—skema komplemenari, triadik, atau analog. **Sambungan pelayar** (ColorZilla, Eye Dropper) untuk mengekstrak warna terus dari mana-mana laman web atau elemen skrin. Berguna untuk memadankan reka bentuk sedia ada. **Pemeriksa kontras** untuk kerja kebolehcapaian. [Pemeriksa Kontras WebAIM](https://webaim.org/resources/contrastchecker/) menguji sama ada kombinasi teks/latar belakang anda memenuhi standard WCAG. **Sistem Pantone/RAL** untuk pemadanan warna cetak yang tepat merentasi kedai cetak dan bahan yang berbeza. Buku swatch fizikal ini menyediakan rujukan piawai yang tidak dapat direplikasi tepat oleh alat digital. ## Menjadikan Warna Boleh Diakses Kira-kira 8% lelaki dan 0.5% wanita mempunyai beberapa bentuk kekurangan penglihatan warna. Berikut adalah cara untuk mereka bentuk secara inklusif: **Jangan sekali-kali gunakan warna sahaja** untuk menyampaikan makna. Jika borang anda menunjukkan ralat dalam warna merah, tambahkan juga ikon atau label teks. Carta dengan garisan berwarna berbeza? Tambahkan corak, label, atau kedua-duanya. **Semak nisbah kontras** menggunakan alat seperti [WebAIM Pemeriksa Kontras](https://webaim.org/resources/contrastchecker/). Teks biasa memerlukan nisbah minimum 4.5:1 berbanding latar belakangnya, teks besar memerlukan 3:1. Menurut [garis panduan WCAG 2.1](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html), ini memastikan kebolehbacaan untuk pengguna dengan penglihatan yang agak rendah. **Elakkan kombinasi bermasalah:** Merah-hijau adalah isu yang paling biasa (protanopia dan deuteranopia menjejaskan persepsi merah dan hijau). Biru-kuning menyebabkan masalah untuk orang dengan tritanopia. Uji reka bentuk anda dengan simulator seperti [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) untuk melihat bagaimana ia kelihatan kepada pengguna dengan jenis kekurangan penglihatan warna yang berbeza. **Gunakan palet mesra buta warna** jika mungkin. Biru, oren, dan kuning umumnya berfungsi baik bersama kerana ia boleh dibezakan merentasi kebanyakan jenis buta warna. ## Soalan Lazim ### Apakah perbezaan antara RGB dan CMYK? RGB adalah untuk skrin, CMYK adalah untuk cetak. Skrin mencipta warna dengan memancarkan cahaya merah, hijau, dan biru (percampuran aditif), manakala pencetak mencipta warna dengan melapisi tinta cyan, magenta, kuning, dan hitam pada kertas (percampuran subtraktif). RGB boleh menghasilkan warna yang lebih cerah dan lebih hidup berbanding CMYK kerana cahaya mempunyai spektrum warna yang lebih luas daripada tinta. Itulah sebabnya warna skrin anda sering kelihatan pudar apabila dicetak. ### Mengapa warna saya kelihatan berbeza apabila dicetak? Skrin memancarkan cahaya, kertas memantulkannya—proses yang sangat berbeza. Tambahan pula, RGB mengendalikan jutaan warna yang tidak dapat dihasilkan oleh tinta CMYK. Kalibrasi skrin, kualiti kertas, dan variasi tinta menambahkan lagi perbezaan. Sentiasa semak nilai CMYK sebelum mencetak, dan minta bukti fizikal untuk kerja yang memerlukan penyepadanan warna kritikal. ### Bagaimana saya mendapatkan kod hex daripada warna yang saya lihat dalam talian? Gunakan alat pembangun pelayar anda. Dalam Chrome atau Firefox, klik kanan mana-mana elemen, pilih "Inspect," kemudian klik kotak warna kecil dalam panel gaya. Ini membuka pemilih warna yang menunjukkan kod hex. Sambungan pelayar seperti ColorZilla membuatkannya lebih cepat—ia membolehkan anda mengklik di mana-mana pada halaman untuk mendapatkan nilai warnanya. ### Apakah maksud simbol # dalam kod hex? Ia hanya awalan yang memberitahu pelayar "ini adalah kod warna heksadesimal". Piawaian ini berasal dari spesifikasi HTML dan CSS awal. Enam aksara selepas `#` mewakili nilai RGB dalam asas-16: dua digit untuk merah, dua untuk hijau, dua untuk biru. Tanpa `#`, pelayar tidak akan mengenali ia sebagai warna. ### Mengapa kod hex 3 digit berfungsi? Ia adalah cara ringkas apabila setiap saluran warna berulang. `#F00` berkembang menjadi `#FF0000` (merah), `#C9C` menjadi `#CC99CC` (ungu muda). Cara ringkas ini dicipta pada tahun 1990-an untuk mengurangkan saiz fail apabila bandwidth mahal. Ia masih berguna hari ini untuk warna mudah. ### Adakah penukaran warna tepat? Penukaran RGB-ke-hex adalah tepat secara matematik—ia adalah nilai yang sama dalam asas nombor yang berbeza. Penukaran RGB-ke-CMYK adalah anggaran kerana anda menukar antara ruang warna yang berbeza (cahaya vs tinta). Alat ini menggunakan [piawaian profil warna ICC](http://www.color.org/specification/ICC1v42_2006-05.pdf) untuk penukaran ini, yang merupakan pendekatan yang sama yang digunakan oleh perisian reka bentuk profesional. ### Bagaimana saya mencipta kombinasi warna yang boleh diakses? Gunakan pemeriksa kontras seperti [alat WebAIM](https://webaim.org/resources/contrastchecker/) selepas memilih warna anda di sini. Anda memerlukan nisbah 4.5:1 untuk teks biasa, 3:1 untuk teks besar. Elakkan kombinasi merah-hijau (paling sukar untuk pengguna buta warna). Apabila ragu, gunakan teks gelap pada latar belakang cerah atau sebaliknya—perbezaan luminans yang mencukupi adalah yang paling penting. ### Bolehkah saya memilih warna dari imej? Tidak secara langsung dalam alat ini. Gunakan sambungan pelayar seperti ColorZilla, atau tangkap skrin imej dan gunakan pemilih warna sistem operasi anda (Digital Color Meter pada macOS, PowerToys Color Picker pada Windows). Sebaik sahaja anda mempunyai nilai warna, masukkannya di sini untuk menukar antara format. ### Mengapa beberapa warna RGB tidak menukar dengan baik ke CMYK? CMYK mempunyai "gamut" (julat warna yang boleh dihasilkan) yang lebih sempit berbanding RGB. Biru cerah, hijau hidup, dan oren elektrik sering berada di luar apa yang boleh dihasilkan oleh tinta CMYK. Apabila ini berlaku, pencetak menggantikan padanan terdekat, yang biasanya kelihatan kurang tepu. Pereka bentuk cetak profesional sering bermula dengan warna selamat CMYK untuk mengelakkan isu ini. ## Contoh Kod untuk Penukaran Warna Berikut adalah beberapa contoh kod yang menunjukkan cara menukar antara format warna yang berbeza:1// Penukaran RGB ke Hex
2function rgbToHex(r, g, b) {
3 const toHex = (c) => {
4 const hex = Math.round(c).toString(16);
5 return hex.length === 1 ? '0' + hex : hex;
6 };
7
8 return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
9}
10
11// Penukaran Hex ke RGB
12function hexToRgb(hex) {
13 // Buang # jika ada
14 const cleanHex = hex.startsWith('#') ? hex.slice(1) : hex;
15
16 // Tangani hex 3 digit dan 6 digit
17 const expandedHex = cleanHex.length === 3
18 ? cleanHex.split('').map(char => char + char).join('')
19 : cleanHex;
20
21 const r = parseInt(expandedHex.substring(0, 2), 16);
22 const g = parseInt(expandedHex.substring(2, 4), 16);
23 const b = parseInt(expandedHex.substring(4, 6), 16);
24
25 return { r, g, b };
26}
27
28// Penukaran RGB ke CMYK
29function rgbToCmyk(r, g, b) {
30 // Normalisasi nilai RGB
31 const normalizedR = r / 255;
32 const normalizedG = g / 255;
33 const normalizedB = b / 255;
34
35 // Kira K (hitam)
36 const k = 1 - Math.max(normalizedR, normalizedG, normalizedB);
37
38 // Tangani hitam tulen
39 if (k === 1) {
40 return { c: 0, m: 0, y: 0, k: 100 };
41 }
42
43 // Kira C, M, Y
44 const c = ((1 - normalizedR - k) / (1 - k)) * 100;
45 const m = ((1 - normalizedG - k) / (1 - k)) * 100;
46 const y = ((1 - normalizedB - k) / (1 - k)) * 100;
47
48 return {
49 c: Math.round(c),
50 m: Math.round(m),
51 y: Math.round(y),
52 k: Math.round(k * 100)
53 };
54}
55
56// Contoh penggunaan
57const rgb = { r: 255, g: 0, b: 0 }; // Merah tulen
58console.log(`Hex: ${rgbToHex(rgb.r, rgb.g, rgb.b)}`);
59console.log(`CMYK:`, rgbToCmyk(rgb.r, rgb.g, rgb.b));
601# Penukaran RGB ke Hex
2def rgb_to_hex(r, g, b):
3 return f'#{r:02x}{g:02x}{b:02x}'
4
5# Penukaran Hex ke RGB
6def hex_to_rgb(hex_color):
7 # Buang # jika ada
8 hex_color = hex_color.lstrip('#')
9
10 # Tangani hex 3 digit dan 6 digit
11 if len(hex_color) == 3:
12 hex_color = ''.join([c*2 for c in hex_color])
13
14 return {
15 'r': int(hex_color[0:2], 16),
16 'g': int(hex_color[2:4], 16),
17 'b': int(hex_color[4:6], 16)
18 }
19
20# Penukaran RGB ke CMYK
21def rgb_to_cmyk(r, g, b):
22 # Normalisasi nilai RGB
23 r_norm = r / 255
24 g_norm = g / 255
25 b_norm = b / 255
26
27 # Kira K (hitam)
28 k = 1 - max(r_norm, g_norm, b_norm)
29
30 # Tangani hitam tulen
31 if k == 1:
32 return {'c': 0, 'm': 0, 'y': 0, 'k': 100}
33
34 # Kira C, M, Y
35 c = ((1 - r_norm - k) / (1 - k)) * 100
36 m = ((1 - g_norm - k) / (1 - k)) * 100
37 y = ((1 - b_norm - k) / (1 - k)) * 100
38
39 return {
40 'c': round(c),
41 'm': round(m),
42 'y': round(y),
43 'k': round(k * 100)
44 }
45
46# Contoh penggunaan
47rgb = {'r': 0, 'g': 128, 'b': 255} # Biru langit
48hex_color = rgb_to_hex(rgb['r'], rgb['g'], rgb['b'])
49cmyk = rgb_to_cmyk(rgb['r'], rgb['g'], rgb['b'])
50
51print(f"Hex: {hex_color}")
52print(f"CMYK: C={cmyk['c']}%, M={cmyk['m']}%, Y={cmyk['y']}%, K={cmyk['k']}%")
531public class ColorConverter {
2 // Penukaran RGB ke Hex
3 public static String rgbToHex(int r, int g, int b) {
4 return String.format("#%02x%02x%02x", r, g, b);
5 }
6
7 // Penukaran Hex ke RGB
8 public static int[] hexToRgb(String hexColor) {
9 // Buang # jika ada
10 if (hexColor.startsWith("#")) {
11 hexColor = hexColor.substring(1);
12 }
13
14 // Tangani hex 3 digit dan 6 digit
15 if (hexColor.length() == 3) {
16 String expandedHex = "";
17 for (char c : hexColor.toCharArray()) {
18 expandedHex += c + String.valueOf(c);
19 }
20 hexColor = expandedHex;
21 }
22
23 int r = Integer.parseInt(hexColor.substring(0, 2), 16);
24 int g = Integer.parseInt(hexColor.substring(2, 4), 16);
25 int b = Integer.parseInt(hexColor.substring(4, 6), 16);
26
27 return new int[]{r, g, b};
28 }
29
30 // Penukaran RGB ke CMYK
31 public static double[] rgbToCmyk(int r, int g, int b) {
32 // Normalisasi nilai RGB
33 double normalizedR = r / 255.0;
34 double normalizedG = g / 255.0;
35 double normalizedB = b / 255.0;
36
37 // Kira K (hitam)
38 double k = 1 - Math.max(Math.max(normalizedR, normalizedG), normalizedB);
39
40 // Tangani hitam tulen
41 if (k == 1) {
42 return new double[]{0, 0, 0, 100};
43 }
44
45 // Kira C, M, Y
46 double c = ((1 - normalizedR - k) / (1 - k)) * 100;
47 double m = ((1 - normalizedG - k) / (1 - k)) * 100;
48 double y = ((1 - normalizedB - k) / (1 - k)) * 100;
49
50 return new double[]{
51 Math.round(c),
52 Math.round(m),
53 Math.round(y),
54 Math.round(k * 100)
55 };
56 }
57
58 public static void main(String[] args) {
59 // Contoh penggunaan
60 int r = 75, g = 0, b = 130; // Ungu
61 String hexColor = rgbToHex(r, g, b);
62 double[] cmyk = rgbToCmyk(r, g, b);
63
64 System.out.println("Hex: " + hexColor);
65 System.out.printf("CMYK: C=%.0f%%, M=%.0f%%, Y=%.0f%%, K=%.0f%%\n",
66 cmyk[0], cmyk[1], cmyk[2], cmyk[3]);
67 }
68}
69Rujukan dan Bacaan Lanjut
- Modul Warna CSS W3C Tahap 4 - Spesifikasi warna web rasmi
- Garis Panduan Kontras WCAG 2.1 - Standard aksesibiliti untuk kontras warna
- Pemeriksa Kontras WebAIM - Uji nisbah kontras warna
- Standard Profil Warna ICC - Spesifikasi teknikal untuk penukaran warna
- Dokumen Web MDN: Nilai Warna CSS - Panduan komprehensif untuk format warna web