Создание случайных цветов RGB в Python

В цифровом мире цвета представлены в нескольких форматах. Форматы RGB и Hexadecimal — лишь два из самых популярных. В этом уроке мы обсудим, как генерировать случайные цвета RGB в Python. Мы создадим случайный код, который может представлять цвет, когда мы говорим о создании случайных цветов. Цветовые коды будут генерироваться в различных формах с использованием различных подходов. Теперь мы рассмотрим, как использовать Python для генерации случайных цветов. Цвета будут генерироваться в двух форматах. Первый — RGB, а второй — шестнадцатеричный. Мы часто используем эти две формы в цифровом мире. Цвета обычно изображаются различными способами. Numpy, Matplotlib и черепаха — это примеры библиотек Python, которые можно использовать для генерации цвета.

Три основных оттенка цветовой системы RGB — красный, зеленый и синий. Его значение находится в диапазоне от 0 до 255. Эти три цвета можно комбинировать для получения разных цветов. В шестнадцатеричном формате за символом # следуют шесть шестнадцатеричных чисел.

Цвета RGB являются шестнадцатеричными цветами. Для получения случайного цвета используется метод random(). Random() — это широко используемый модуль Python, который может создавать случайные целые числа или цвета. Полезно выбирать вещи наугад и перемешивать элементы в списке.

Пример 1:

Чтобы получить случайные цвета, сначала импортируйте случайный модуль. После этого вам нужно будет создать цикл for, который повторяется 20 раз, чтобы получить 20 разных цветов. Затем функция join() используется для соединения кода # и цвета. Функция Python String join() — это строковая техника, которая возвращает строку с разделителем str, используемым для соединения компонентов последовательности. Буква # используется для начала кода цвета. Для повторения используйте цикл for. Теперь цветовые коды созданы.

Импортироватьслучайный
за Дж вдиапазон(20):
цвета =[«#»+».присоединиться([случайный.выбор(‘ABCDEF0123456789’)за я вдиапазон(6)])]
Распечатать(цвета)

Ниже вы можете видеть, что цветовые коды успешно сгенерированы.

Пример 2:

В данном случае речь пойдет о шестнадцатеричной системе счисления. 16-символьная система счисления, также известная как система нумерации символов, является шестнадцатеричной системой счисления. Он также известен как шестнадцатеричный на языке Python. В этом примере модуль random будет использоваться для генерации случайного цвета в шестнадцатеричном формате. Функция join() используется для связывания кода # и цвета. Буква # будет использоваться для начала кода цвета. Для повторения используйте цикл for. Цветовой код теперь произведен. Есть много дополнительных цветовых форматов на выбор, и преобразование между ними простое. Следует иметь в виду, что можно использовать слишком сгенерированные цветовые коды в различных формах. Для просмотра этих цветов необходимо использовать дополнительные модули для создания визуального представления или построения графика.

Вывод показывает, что цвет создается в соответствии с приведенным выше кодом.

Пример 3:

Здесь мы покажем вам, как генерировать случайные цвета с помощью библиотеки matplotlib. Matplotlib — это пакет для визуализации данных и графической схемы для Python и его арифметического расширения NumPy, который работает на всех платформах. В результате он предоставляет альтернативу MATLAB с открытым исходным кодом. API-интерфейсы Matplotlib также можно использовать для встраивания графиков в графические пользовательские интерфейсы. Импорт библиотеки matplotlib — это первый шаг. После этого вам нужно будет загрузить случайный модуль. Затем поместите значение в переменную no of colors.

Затем функция join() используется для связывания кода # и цвета. Буква # всегда будет использоваться для начала кода цвета. Для повторения используйте цикл for. Цветовой код теперь произведен. Цвет будет доступен в поиске, т.к. мы решили объявить его списком — дальше печатаем случайный цвет. Помимо этих методов, модуль черепахи также можно использовать для создания случайных цветов в Python. Turtle — это предустановленный модуль Python, который позволяет пользователям применять виртуальный холст для создания графики и фигур. Это повторная реализация одноименного модуля, включенного в стандартный пакет Python до Python 2.5. Черепаха — это название экранного пера, которым вы рисуете, а также имя библиотека.

Импортировать матплотлиб.сюжетв виде пт
Импортироватьслучайный
цвета=4
цвет=[«#»+».присоединиться([случайный.выбор(‘0123456789ABCDEF’)за я вдиапазон(6)])
за Дж вдиапазон(цвета)]
Распечатать(цвет)
за Дж вдиапазон(цвета):
пт.разбрасывать(случайный.рэндинт(0,10),случайный.рэндинт(0,10),с=цвет[Дж],с=200)
пт.показывать()

Приведенный выше код сгенерировал этот вывод.

Вывод:

Во всех браузерах поддерживаются значения цвета RGB. Цветовой код RGB используется для указания значения цвета RGB (красный, зеленый, синий). Каждый из трех параметров (красный, зеленый и синий) определяет интенсивность цвета как число от 0 до 255. В этом уроке рассказывалось, как генерировать случайные цвета RGB в Python. Для генерации цветов мы использовали различные методы и форматы. Это доступные способы генерации случайных цветов.

RGB, HSL, LCH и вот это вот всё — Разработка на vc.ru

RGB какой-то отстой.

91 просмотров

Модель RGB, мало чем отличающаяся от ASCII, адресов памяти и наличия 86 400 секунд в сутках, является одной из тех инструментов, которые немного упрощают программирование, до поры до времени.

Теоретически RGB — это группа цветовых пространств, которая позволяет указать дисплею, какое напряжение требуется каждому субпикселю. Однако на практике теперь у нас есть телефоны с дисплеями, которые позволяют отображать более 100% красного цвета, что является новым типом красного цвета, называемым суперкрасным. У нас есть другие дисплеи, в которых синего в два раза больше, чем красного или зелёного. И, вероятно, уже некоторое время ваши значения RGB не соответствуют напряжениям дисплея.

RGB сложно осмысливать рационально. Красный, зелёный и синий источники света ведут себя не так, как мы привыкли — вы можете видеть отдельные цвета вблизи, но по мере удаления они смешиваются вместе, и вы начинаете видеть только один цвет.

С достаточно большого расстояния вы не сможете убедить свой разум в том, что существует три источника света. В настоящее время вы смотрите на миллионы крошечных массивов из 3 источников света, и всё же эффект настолько убедителен, что вы почти никогда не задумываетесь об этом.

Наконец, RGB трудно настраивать. Если вы начнёте с чёрного, вы можете увеличить количество “red” (красного) в палитре цветов RGB, что сделает всё более красным. Всё идет нормально. Затем вы начинаете увеличивать “green” (зелёный), и вы получаете… жёлтый? Это не очень интуитивно понятное цветовое пространство для навигации. Есть и другие представления цветов, которые легче поддаются изменению.

Цвета на годы

У меня есть личное приложение, где мне необходимо показать график за несколько лет. Каждому году на графике требуется другой цвет, поэтому каждый новый год я захожу в код, нахожу новый красивый цвет для нового года и развертываю приложение. Сколько лет я буду этим заниматься, пока не найду алгоритм, с помощью которого можно это автоматизировать?

Мне необходимы некоторые цвета, которые:

а) произвольны при генерации кода;

б) красиво выглядят;

в) определяются исключительно целым числом года.

Нам требуется реализовать такую функцию:

func color(for year: Int) -> Color

RGB действительно может удовлетворить только первому из моих критериев — эта модель может создавать случайные цвета со случайными числами:

Color(red: .random(in: 0..<1), blue: .random(in: 0..<1), green: .random(in: 0..<1))

К сожалению, цвета, сгенерированные таким образом, выглядят очень плохо. Они часто получаются грязными и румяными, а создание более чем одного цвета не сопровождается каким-либо узором или структурой. Цвета повсюду.

Это структурная проблема с RGB. RGB фокусируется на том, как создается цвет, а не на том, как он воспринимается.

К счастью, решение этой проблемы хорошо задокументировано. Есть несколько сообщений в блогах и постах (предупреждение: JavaScript), в которых излагается подход. Идея такова: используя цветовое пространство, основанное на оттенках, такое как HSL, вы можете сохранять два параметра постоянными saturation и lightness (насыщенность и яркость) и изменять только оттенок, давая вам несколько цветов, которые живут в одном и том же “family” (семействе).

(Существуют тонкие различия между HSL, HSB, HSV и HWB, но чередование оттенков в основном одинаково во всех цветовых моделях, и любая из них будет хорошо работать с этой техникой.)

Например, использование значения 0.8 для saturation и lightness дает хорошие пастельные тона:

Color(hue: .random(in: 0..<360), saturation: 0.8, lightness: 0.8)

Вы можете играть с этой палитрой цветов; переместите ползунок “hue” (оттенок), чтобы увидеть множество цветов в этом семействе.

С другой стороны, значения 0.6 для saturation и 0.5 для lightness дают более насыщенные цвета:

Color(hue: .random(in: 0..<360), saturation: 0.6, lightness: 0.5)

Эта палитра цветов показывает примеры этих цветов.

Проницательные читатели заметят, что в то время как собственные API-интерфейсы Apple принимают число от 0 до 1, этот фальшивый инициализатор, который я сделал, ожидает оттенок от 0 до 360. Я нахожу это более наглядным, потому что это значение представляет собой некоторое количество градусов.

Здесь есть физическая аналогия с кругом оттенков. Круги зацикливаются сами на себе, поэтому 3590 в основном того же цвета, что и 10. Это позволяет вам выйти за пределы круга оттенков и изменить его на 3600, чтобы вернуться к разумному цвету.

Это позволяет нам реализовать большую часть нашей функции color(for year: Int):

func color(for year: Int) -> Color { let spacing = … return Color(hue: (year * spacing) % 360, saturation: 0.8, lightness: 0.5) }

Интервал представляет собой количество градусов, которое необходимо пройти по кругу оттенков каждый раз, когда нам необходимо выбрать следующий цвет.

Какое оптимальное число выбрать здесь?

Вращение в пространстве оттенков

Если мы сделаем этот угол слишком близким к нулю, цвета будут располагаться слишком близко друг к другу на круге оттенков, что сделает их слишком похожими. Однако, если мы сделаем это слишком близко к значению 3600 (полный оборот), после изменения градусов на 360 они всё равно будут слишком похожи, за исключением того, что они будут идти назад по кругу оттенков. Может быть, мы хотим попробовать 1800 ? Это делает все остальные цвета абсолютно одинаковыми, так что это тоже не совсем правильно.

На самом деле, любое вращение, которое равномерно делится на 3600, через некоторое время приведет к повторению. А у 360 много факторов!

Одно из решений состоит в том, чтобы разложить компоненты на 360 значений, разделенных на количество лет, которые у нас есть, и тогда цвета будут меняться каждый раз, когда наступает новый год. Это создает радугу, которая, хотя и выглядит красиво, не имеет случайного представления, к которому я стремлюсь.

Однако есть лучший способ сделать это, и ответ содержится в видео на YouTube, которое я смотрел более 10 лет назад. Замечательный Ви Харт (Vi Hart) опубликовал серию видеороликов (раз, два, три) о том, как растениям необходимо отрастить свои новые листья таким образом, чтобы они не были заблокированы верхними листьями, что позволяет им получать максимум солнечного света. Во втором видео из этой серии есть соответствующий бит.

Число градусов вокруг стебля, из которого растение решает вырастить свой следующий лист — это именно то число, которое мы ищем. Это некоторый поворот, на который мы получим неперекрывающиеся листья — я имею в виду цвета.

Поскольку любое рациональное число приведет к повторяющимся цветам или перекрывающимся листьям, она ищет иррациональное число. В идеале “самое” иррациональное число. Она находит его в ϕ, это примерно 1.618. Нам необходимо проходить 1/1.618 часть круга оттенков каждый раз, когда нам требуется новый цвет, и это даст нам необходимые цвета.

Если цвета вам не нравятся, вы можете дополнительно повернуть, добавив фазовый сдвиг в уравнение:

func color(for year: Int) -> Color { let spacing = 360/1.618 return Color(hue: 300 + (year * spacing) % 360, saturation: 0.8, lightness: 0.5) }

Эта функция соответствует нашим критериям, цвета, которые получаются из неё:

а) произвольны;

б) выглядят неплохо;

в) определяются исключительно годом.

Следующий шаг

Если ваша единственная цель — несколько простых цветов для прототипа или побочного проекта, то того, что я рассказал до сих пор, будет достаточно. Но если вы хотите использовать это в более серьёзных и масштабных приложениях, вы можете сделать ещё один шаг.

Цветовая модель HSL имеет несколько серьезных недостатков. Она, как и RGB, была разработана для простоты вычислений, а не для точности базовых цветов. В частности, при повороте значения оттенка (что мы и делаем с помощью этой техники) вы обнаружите, что некоторые оттенки окрашены намного светлее, чем другие, даже если saturation и lightness остаются постоянными. Эти цвета выглядят светлее, хотя технически они являются одной и той же “lightness”.

Цветовое пространство LCH (luminance, chroma, hue) решает эту проблему. Насколько я могу судить, это золотой стандарт цветов на дисплее. Это даёт вам единообразие восприятия, что позволяет вам поворачивать оттенок и получать цвета, которые даже больше похожи друг на друга, чем вы могли бы получить с помощью HSL. Это также даёт некоторые преимущества, когда дело доходит до контраста при чтении текста.

На самом деле, если вы внимательно посмотрите на приведённые выше цвета (которые представляют собой цвета для 2015–2023 годов с использованием нашего алгоритма), этот зелёный лайм выглядит немного приглушенным по сравнению с его фиолетовым соседом.

Здесь вы можете поиграть с палитрой цветов LCH. Чтобы заставить LCH работать с UIColor, вы можете использовать эти четыре полезных принципа.

Использование LCH для создания моих цветов с помощью описанной выше техники вращения оттенков дало красивые цвета.

func color(for year: Int) -> Color { let spacing = 360/1.618 return Color(luminance: 0.7, chroma: 120, hue: 300 + (year * spacing) % 360) }

Этот браузер не поддерживает цвет LCH. Попробуйте Safari или мобильную версию Safari 15 или выше.

Все эти цвета имеют одинаковую lightness, и они отлично смотрятся для чего-то полностью процедурно сгенерированного. Они яркие, однородные и замечательные.

Модель, которую вы выбираете для жизни, создает ограничения, которые вы, возможно, не предполагали ограничивать. Любой цвет из любого из этих цветовых пространств может быть (более или менее) переведён в любое другое цветовое пространство с небольшой разницей. Поэтому цвета, которые мы получили в итоге, могут быть записаны в терминах красных, зеленых и синих значений (опять же, здесь махнув немного рукой). Но хотя RGB может представлять эти цвета, это не означает, что вы можете легко перемещаться по пространству таким образом, чтобы получить цвета, которые хорошо смотрятся вместе. Выбор правильного цветового пространства для начала делает проблему, по крайней мере, решаемой.

Поправимо, но до сих пор не решено. Эти произвольные красивые цвета могут быть сгенерированы с помощью процесса, стохастически открытого эволюцией, открытого учеными в 1830 году, и применённого на практике с использованием надёжного набора веб-стандартов, которые позволяют мне показать их вам в браузере.

В конце концов, стремление растений к солнечному свету стало ключом к созданию приятных цветов для моей маленькой диаграммы.

Оригинал статьи

Подписывайся на наши соцсети: Telegram / VKontakte

Вступай в открытый чат для iOS-разработчиков: t.me/swiftbook_chat

цветов HEX, RGB, RGBA и HSL

Генератор цветов

Генератор цветов — это онлайн-инструмент для создания случайного цвета или набора случайных цветов в цветовом формате HEX, RGB(A) или HSL. Вы можете создать до списка из 100 случайных цветов одновременно.

Хотите выбрать случайный цвет, вращая колесо? Крути Колесо Цветов.

Настройки Генератор цвета

Настройки цвета Количество цветов

123456789101520255075100

Формат цвета

HEXRGBRGBAHSL

Случайные цвета

Список случайных цветов

Щелкните или коснитесь цвета, чтобы скопировать код цвета в буфер обмена.

Что такое генератор случайных цветов?

Онлайн-генератор случайных цветов — это инструмент, с помощью которого вы можете легко создать случайный цвет или список случайных (сетевых) цветов из следующих различных типов цветов: HEX, RGB(A) и цвета HSL.

Генератор цвета может быть чрезвычайно полезен для дизайнеров, которым нужно вдохновение, или для разработчиков, использующих пробный цвет.

Генератор случайных шестнадцатеричных цветов

Цвет шестнадцатеричных кодов — это цвет из шестнадцатеричных значений. Цвет шестнадцатеричного кода начинается с символа #, за которым следуют шесть шестнадцатеричных значений. 6 шестнадцатеричных значений представляют собой 3 пары, которые представляют значения красного, зеленого и синего цветов. Hex Code Color часто используется на веб-сайтах и ​​в дизайне.

Когда вы используете генератор шестнадцатеричного кода цвета?

Генератор случайных цветов RGB

RGB означает красный, зеленый и синий. Числа RGB идут от 0 до 255 для каждого значения и определяют интенсивность цвета. rgb(0,0,0) — это черный цвет, а rgb(255,255,255) — это белый цвет.

Вы предпочитаете генератор цветов RGB или генератор цветов HEX?

Генератор случайных цветов RGBA

RGBA означает красный, зеленый, синий и альфа-канал, который работает так же, как цвета RGB, только альфа-это непрозрачность цвета, которая может принимать значения от 0 до 1. При использовании значения 0 для альфы он будет прозрачным, а при значении 1 прозрачность отсутствует и представляет собой полный цвет.

В каких случаях вы используете генератор случайных цветов RGBA?

Генератор случайных цветов HSL

HSL означает оттенок, насыщенность и яркость. Оттенок обозначает цвет и может иметь значение от 0 до 360. Насыщенность — это шкала оттенков серого цвета в процентах от 0% до 100% от черного до белого. Яркость — это процент от 0% до 100% от черного до белого.

Какие еще генераторы цветов вы бы хотели видеть помимо генератора цветов HSL?

Часто задаваемые вопросы

В приведенном ниже списке вы можете найти ответы на часто задаваемые вопросы о нашем инструменте. Вашего конкретного вопроса нет в списке? Пожалуйста, отправьте нам сообщение через Facebook или Instagram.

Генератор цветов можно использовать бесплатно для создания неограниченного количества случайных цветов.

Мы поддерживаем следующие типы цветов: HEX, RGB, RGBA и HSL. 6 = 16 777 216 цветов.

Инструменты генератора случайных чисел

Создание случайных цветов RGB в Python

Python

1 месяц назад

от Abdul Mannan

Чтобы генерировать цвета RGB, пользователь должен сначала понять наиболее распространенное представление RGB. Эти значения цвета представлены либо в 6-значном шестнадцатеричном формате, либо в виде списка из 3 различных значений в диапазоне от 0 до 255. Для этого пользователь может использовать метод selection() для создания шестнадцатеричного представления случайного цвета RGB или метод randint() для создания списка из 3 отдельных значений.

Содержание этого поста включает:

    • Метод 1: Использование метода selection() для создания шестнадцатеричного кода RGB
    • Способ 2: использование метода randint() для создания значений RGB

Начнем с первого метода.

Метод 1: Использование метода selection() для создания шестнадцатеричного кода RGB

Представление шестнадцатеричного кода цвета RGB начинается с символа решетки « # », за которым следуют 6 шестнадцатеричных символов. Шестнадцатеричные символы включают числа от 0 до 9.и алфавиты от A до F. Чтобы создать случайное шестнадцатеричное значение RGB, используйте следующий фрагмент кода:

rgbValue = «#»+rgbValue

print(rgbValue)

 
В приведенном выше фрагменте кода:

    • Пакет «random» импортирован для использования метода selection().
    • Объявлена ​​пустая строка «rgbValue».
    • Выполняется метод selection() для выбора шестнадцатеричного символа 6 раз с помощью цикла for, и эти 6 символов объединяются с помощью оператора конкатенации строк.
    • Наконец, префикс « # » также добавляется с помощью конкатенации строк.

Когда этот код выполняется, он отображает следующий результат:


Как вы можете видеть, значение цвета RGB было сгенерировано. Однако было бы лучше преобразовать этот код в функцию и вызвать эту функцию для генерации нескольких цветов. Возьмите следующий код для функционального подхода:

import random
def randRGB():
    rgbValue=»»
    for i in range(6):
        rgbValue += random. choice(«0123456789ABCDEF»)

    rgbValue = «#»+rgbValue
    вернуть rgbValue

для i in range(10):
    print(randRGB())

 
Когда этот код выполняется, он дает следующие результаты:


В выходных данных вы можете ясно видеть, что код сгенерировал 10 случайных значений RGB. в шестнадцатеричном формате.

Метод 2: Использование метода randint() для генерации значений RGB

Метод randint() пакета «random» может использоваться для генерации целочисленных значений, что очень полезно, когда вы хотите представить значения RGB в соответствии с их индивидуальная интенсивность. Значения RGB представлены в виде набора из 3 значений, каждое значение представляет интенсивность цвета от 0 до 255. Первое значение — красный, затем зеленый и последнее — синий. Чтобы сгенерировать эти наборы значений интенсивности для цветов RGB, используйте следующий код:

import random

randomRGB = []
for i in range(3):
    randomRGB. append(random.randint(0,255))
print(randomRGB)

 
В этом фрагменте кода:

9 0082
    • Пакет «random» импортируется для использования его метода randint().
    • Пустой список «randomRGB», который будет использоваться для хранения трех значений красного, зеленого и синего.
    • Метод randint() используется для трехкратного выбора значения от 0 до 255 с помощью цикла for.
    • Эти значения добавляются в список с помощью метода append().
    • Наконец, список randomRGB распечатывается на терминале.
  • При выполнении этого кода будут получены следующие результаты:


    Вывод показывает, что было сгенерировано случайное значение RGB. Однако, как и в первом методе, вы можете использовать функциональный подход для лучшей модульности:

    import random

    def getRandRGB():
        randomRGB = []
        для i в диапазоне (3):
            randomRGB.append(random.randint(0,255))
        return(randomRGB)

    для i в диапазоне (10):
        print(getRandRGB())

      9 0101 Запуск этого кода выведите на терминал следующий результат:


    Как видно из вывода, 10 различных случайных значений RGB были сгенерированы и напечатаны на терминале.