20230706 13h07m53s grim

Mengkonversi Kode Warna Hex ke RGB dengan Python.

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)Code language: Python (python)

output yang kita dapat akan seperti ini.

(0.11372549019607843, 0.17647058823529413, 0.20392156862745098)Code language: Shell Session (shell)

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)Code language: Python (python)

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

$ ./hex-ke-rgb.py '#kodewarnahex'
$ ./hex-ke-rgb.py '#1d2d34'Code language: Shell Session (shell)

Hasilnya akan sama, yaitu :

(0.11372549019607843, 0.17647058823529413, 0.20392156862745098)Code language: Shell Session (shell)

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])Code language: JavaScript (javascript)

output yang kita dapat akan seperti ini.

(29, 45, 52)
[0.11328125, 0.17578125, 0.203125]Code language: Shell Session (shell)

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])Code language: Python (python)

Simpan sebagai pillow.py, lalu jalankan kodenya !

$ ./pillow.py '#kodewarnahex'
$ ./pillow.py '#1d2d34'Code language: Shell Session (shell)

output yang kita dapat akan seperti ini.

Biasa : (29, 45, 52)
0 - 1 : [0.11328125, 0.17578125, 0.203125]Code language: Shell Session (shell)

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 !

Artikel Terkait

Leave a Reply

Your email address will not be published. Required fields are marked *