Saya sedikit menggemari ricing atau menghias tampilan GUI dan WM (window manager). Salah satu yang dihias biasanya adalah warna dan kadang warna yang saya dapatkan berupa kode hex, misalnya #1d2d34. Sedangkan yang saya butuhkan adalah berupa kode warna RGB, misalnya (28, 24, 35) atau dalam bentuk bilangan “0” sampai “1”, misalnya (0.1, 0.2, 1). Berbekal rasa penasaran, akhirnya saya mengulik cara sederhana untuk mengkonversi kode warna hex ke format RGB dengan bahasa python.

Menggunakan python ? Modul apa yang dipakai.

Untuk mengkonversi kode warna, kita memiliki beberapa alternatif modul. Untuk kesempatan kali ini, kita hanya memaparkan 2 modul yaitu matplotlib dan pillow. Matplotlib dan pillow bisa dipasang melalui paket manager atau bisa lewat pip.

Catatan : Untuk menghindari error “externally-managed-environment” saat memasang modul dengan pip, disarankan untuk menggunakan lingkungan virtual. Panduan bisa dilihat di sini.

Mengkonversi kode warna hex dengan matplotlib dan pillow.

Menggunakan modul matplotlib.

Mengkonversi warna dengan modul matplotlib cukup sederhana, kita hanya perlu menulis sekitar 3 baris kode. Kodenya sebagai berikut, misal kita ingin mengetahui kode RGB dari warna #1d2d34.

#!/usr/bin/env python3

import matplotlib.colors
rgb = matplotlib.colors.to_rgb('#1d2d34')
print(rgb)

output yang kita dapat akan seperti ini.

(0.11372549019607843, 0.17647058823529413, 0.20392156862745098)

Jika menginginkan kode yang menggunakan argumen / opsi, bisa diubah menjadi seperti ini.

#!/usr/bin/env python3

import sys
import matplotlib.colors

hex = sys.argv[1]
rgb = matplotlib.colors.to_rgb(hex)
print(rgb)

Simpan dengan nama hex-ke-rgb.py lalu jalankan seperti berikut ini !

$ ./hex-ke-rgb.py '#kodewarnahex'
$ ./hex-ke-rgb.py '#1d2d34'

Hasilnya akan sama, yaitu :

(0.11372549019607843, 0.17647058823529413, 0.20392156862745098)

Menggunakan modul pillow.

Menggunakan modul pillow tidak kalah sederhana, kita akan menulis kode untuk hasil konversi bilangan bulat dan desimal. Misalnya kita ingin mengetahui kode RGB dari warna #1d2d34. Kodenya sebagai berikut.

#!/usr/bin/env python3

from PIL import ImageColor
rgb = ImageColor.getcolor("#1d2d34", "RGB")
print(rgb)
print([i/255 for i in rgb])

output yang kita dapat akan seperti ini.

(29, 45, 52)
[0.11328125, 0.17578125, 0.203125]

Atau jika ingin menggunakan opsi atau argumen, kita bisa mengubahnya seperti ini.

#!/usr/bin/env python3

import sys
from PIL import ImageColor

hex = sys.argv[1]
rgb = ImageColor.getrgb(hex)

print("Biasa :", rgb)
print("0 - 1 :", [i/256 for i in rgb])

Simpan sebagai pillow.py, lalu jalankan kodenya !

$ ./pillow.py '#kodewarnahex'
$ ./pillow.py '#1d2d34'

output yang kita dapat akan seperti ini.

Biasa : (29, 45, 52)
0 - 1 : [0.11328125, 0.17578125, 0.203125]

Ringkasan.

Berikut ini adalah beberapa ringkasan bahasan kita kali ini.

  1. Kode warna hex dapat dikonversi ke format RGB.
  2. Konversi bisa menggunakan modul python, di antaranya matplotlib dan pillow.

Referensi dan kredit.

Berikut ini merupakan referensi dan kredit untuk bahasan kita kali ini.

  1. Post Julian White pada laman Stackoverflow berkaitan dengan cara konversi kode warna hex ke format rgb.
  2. Jawaban SuperNova untuk referensi penggunaan modul pillow.
  3. Jawaban LBJ untuk referensi penggunaan modul matplotlib.

Penutup.

Demikiann tadi tutorial singkat tentang cara mengkonversi kode warna hex ke format RGB dengan python. Semoga bisa menambah referensi kita dalam dunia kode python. Terima kasih dan sampai berjumpa pada bahasan selanjutnya !