Rgb to int python

Преобразование цветового кортежа RGB в шестизначный код в Python

Мне нужно преобразовать (0, 128, 64) в что-то вроде этого # 008040. Я не уверен, как назвать последнее, что затрудняет поиск.

11 ответов

Используйте оператор формата % :

>>> '#%02x%02x%02x' % (0, 128, 64) '#008040' 

Обратите внимание, что он не будет проверять границы .

>>> '#%02x%02x%02x' % (0, -1, 9999) '#00-1270f' 
triplet = (0, 128, 64) print '#'+''.join(map(chr, triplet)).encode('hex') 
from struct import pack print '#'+pack("BBB",*triplet).encode('hex') 

Python3 немного отличается

from base64 import b16encode print(b'#'+b16encode(bytes(triplet))) 
def RGB(red,green,blue): return '#%02x%02x%02x' % (red,green,blue) background = RGB(0, 128, 64) 

Я знаю, что в Python на однострочники не обязательно обращают внимание. Но бывают случаи, когда я не могу удержаться, воспользовавшись тем, что позволяет парсер Python. Это тот же ответ, что и у решения Дитриха Эппа (лучший), но заключенный в одну строчную функцию. Итак, спасибо, Дитрих!

Я использую это сейчас с tkinter 🙂

Это старый вопрос, но для информации я разработал пакет с некоторыми утилитами, связанными с цветами и цветовыми картами, и содержит функцию rgb2hex, которую вы искали, чтобы преобразовать триплет в значение гекса (которое можно найти во многих других пакетах, например, matplotlib). Это на пипи

>>> from colormap import rgb2hex >>> rgb2hex(0, 128, 64) '##008040' 

Действительность входов проверяется (значения должны быть от 0 до 255).

def clamp(x): return max(0, min(x, 255)) "#".format(clamp(r), clamp(g), clamp(b)) 

При этом используется предпочтительный метод форматирования строк, как , описанный в PEP 3101 . Он также использует min() и max для обеспечения 0

Обновление добавило функцию зажима, как предложено ниже.

Обновить . Из заголовка вопроса и данного контекста должно быть очевидно, что в [0,255] ожидается 3 дюйма и всегда будет возвращаться цвет при пропуске 3 таких. Тем не менее, из комментариев, это может быть не очевидно для всех, так что давайте прямо заявим:

При условии трех int значений это вернет действительный шестнадцатеричный триплет, представляющий цвет. Если эти значения находятся между [0,255], то они будут обрабатываться как значения RGB и возвращать цвет, соответствующий этим значениям.

Обратите внимание, что это работает только с python3.6 и выше.

def rgb2hex(color): """Converts a list or tuple of color to an RGB string Args: color (list|tuple): the list or tuple of integers (e.g. (127, 127, 127)) Returns: str: the rgb string """ return f"#<''.join(f'2>' for c in color)>" 
def rgb2hex(color): string = '#' for value in color: hex_string = hex(value) # e.g. 0x7f reduced_hex_string = hex_string[2:] # e.g. 7f capitalized_hex_string = reduced_hex_string.upper() # e.g. 7F string += capitalized_hex_string # e.g. #7F7F7F return string 

В Python 3.6 вы можете использовать f-строки , чтобы сделать это чище:

Конечно, вы можете поместить это в функцию , и в качестве бонуса значения округляются и преобразуются в int :

def rgb2hex(r,g,b): return f'#' rgb2hex(*rgb) 

Вы также можете использовать побитовые операторы, что довольно эффективно, хотя я сомневаюсь, что вы будете беспокоиться об эффективности с чем-то вроде этого. Это также относительно чисто. Обратите внимание, что он не зажимает и не проверяет границы. Это поддерживается с версии Python 2.7.17 ..

И чтобы изменить его так, чтобы он начинался с #, вы можете сделать:

Вот более полная функция для обработки ситуаций, в которых у вас могут быть значения RGB в диапазоне [0,1] или диапазоне [0,255] .

def RGBtoHex(vals, rgbtype=1): """Converts RGB values in a variety of formats to Hex values. @param vals An RGB/RGBA tuple @param rgbtype Valid valus are: 1 - Inputs are in the range 0 to 1 256 - Inputs are in the range 0 to 255 @return A hex string in the form '#RRGGBB' or '#RRGGBBAA' """ if len(vals)!=3 and len(vals)!=4: raise Exception("RGB or RGBA inputs to RGBtoHex must have three or four elements!") if rgbtype!=1 and rgbtype!=256: raise Exception("rgbtype must be 1 or 256!") #Convert from 0-1 RGB/RGBA to 0-255 RGB/RGBA if rgbtype==1: vals = [255*x for x in vals] #Ensure values are rounded integers, convert to hex, and concatenate return '#' + ''.join([''.format(int(round(x))) for x in vals]) print(RGBtoHex((0.1,0.3, 1))) print(RGBtoHex((0.8,0.5, 0))) print(RGBtoHex(( 3, 20,147), rgbtype=256)) print(RGBtoHex(( 3, 20,147,43), rgbtype=256)) 

Вы можете использовать лямбда и f-строки (доступно в Python 3.6+)

rgb2hex = lambda r,g,b: f"#" hex2rgb = lambda hx: (int(hx[0:2],16),int(hx[2:4],16),int(hx[4:6],16)) 

rgb2hex(r,g,b) #output = #hexcolor hex2rgb(«#hex») #output = (r,g,b) hexcolor must be in #hex format

Я создал полную программу на Python, следующие функции могут конвертировать rgb в hex и наоборот.

def rgb2hex(r,g,b): return "#".format(r,g,b) def hex2rgb(hexcode): return tuple(map(ord,hexcode[1:].decode('hex'))) 

Вы можете увидеть полный код и учебное пособие по следующей ссылке: Преобразование RGB в Hex и Hex в RGB с использованием Python

Источник

Convert RGB to hex color code in Python

In this article, we are going to learn about how to convert RGB to hex color code in python. This article is mainly for the conversion of RGB to hex color code but we will also see the reverse of this how-to convert hex color code to RGB in python. Before moving further we need to understand that what is RGB and hex color.

Difference between RGB and hex color

RGB color :- In RGB color R stands for Red, G stands for Green, and B stands for Blue, and it ranges from the decimal value of 0 – 255. Therefore for every set of color have 256 combinations of color. So, the total possible value of color available is (256 x 256 x 256) i.e. 16,777,216. Example:- (255,0,0) –> this color is red.

Hex color :- A hex color code is a unique way to express color using the hexadecimal values. The code is written in a hex triplet, which represents each value that specifies the components of the colors. The code always starts with a hashtag sign (#) and after this sign, six hex value or three hex value pair is written. Example:- #bab7c8

Conversion of RGB to hex and vice-versa in Python

There are many methods available for the conversion of RGB to hex and vice-versa. Let’s understand with some examples:-

def rgb_to_hex(rgb): return '%02x%02x%02x' % rgb rgb_to_hex((255, 255, 195))

Output:- ‘ffffc3

In the above example, we created a function and passed the RGB value as an argument inside it and we converted RGB into Hex using the string conversion.

def hex_to_rgb(value): value = value.lstrip('#') lv = len(value) return tuple(int(value[i:i+lv//3], 16) for i in range(0, lv, lv//3)) hex_to_rgb("FF65BA")

Output:- (255, 102, 186)

In the above example, we created the function to convert Hex to RGB and passed the string inside it and then converted it to the tuple of integers.

import matplotlib print(matplotlib.colors.to_hex([ 0.47, 0.0, 1.0 ])) print(matplotlib.colors.to_hex([ 0.7, 0.321, 0.3, 0.5 ], keep_alpha=True)) print(matplotlib.colors.to_rgb("#aabbcc")) print(matplotlib.colors.to_rgb("#ddee9f"))
#7800ff #b2524c80 (0.6666666666666666, 0.7333333333333333, 0.8) (0.8666666666666667, 0.9333333333333333, 0.6235294117647059)

In this example, we imported the required module i.e. matplotlib and then used the function “colors.to_hex” and “colors.to_rgb” and passed the required value inside each function. In one of the examples, we passed four arguments inside the function colors.to_hex, the fourth argument is for the opacity of the color. Opacity varies from 0 to 1.

3 responses to “Convert RGB to hex color code in Python”

def rgb_to_hex(rgb):
return ‘%02x%02x%02x’ % rgb
rgb_to_hex((255, 255, 195)) this code is not right. what is rgb? is it r*b*g? or merged or what?

#it works.
def rgb_to_hex(rgb):
r,g,b=rgb
return ‘#%02x%02x%02x’ % (r,g,b)
print(rgb_to_hex((0, 34, 255)))

Источник

How to convert hex to RGB and RGB to hex in Python

Many candidates are rejected or down-leveled due to poor performance in their System Design Interview. Stand out in System Design Interviews and get hired in 2023 with this popular free course.

In this Answer, we are going to see how we can convert any hexadecimal color code value to its RGB format equivalent and vice-versa. Let’s see them one by one.

Converting hex to RGB

We will use the following approach to convert hex color codes into RGB format:

  • The RGB format has three values: Red, Green, and Blue.
  • Hex color codes have a length of 6, i.e., they can contain 6 hex values (like BAFD32, AAFF22, etc).
  • We need to take two hex values for one RGB value, convert those two hex values to decimal values, and then perform the same step with the other values.
  • We will get 3 values that correspond to RGB values.

Let’s see how this can be implemented in the code.

def hex_to_rgb(hex):
rgb = []
for i in (0, 2, 4):
decimal = int(hex[i:i+2], 16)
rgb.append(decimal)
return tuple(rgb)
print(hex_to_rgb('FFA501'))

Explanation

  • Line 1: We define the hex_to_rgb() function that accepts the hex color code values.
  • Line 3: We run the loop by taking two hex values from the color code at a time.
  • Line 4: We convert the two hex values to their decimal representation by specifying the base as 16 in the int() function.
  • Line 7: We return the result in tuple format the format in which RGB values are stored .

Now, let’s see how we can convert the RGB values to their hex representation.

Converting RGB to hex

To convert RGB values to hex values, we are going to take the three RGB values and convert them to their hex representation using :02x while returning the hex value.

Now, let’s take a look at the code.

Источник

Читайте также:  Java spring controller parameters
Оцените статью