Тестирование цветов HSL, в идеале, избегая красного прилегающего к зеленому (обычный тип цветной слепоты)

StackOverflow https://stackoverflow.com/questions/4642219

  •  09-10-2019
  •  | 
  •  

Вопрос

Вдохновленный лучшим ответом на эта страница Я написал программу Python для генерации отчетных шестигранных цветов. Разница состоит в том, что первоначальный автор генерирует насыщенность и яркости, используя Math.random (), тогда как я использую тригонометрическую функцию, которую я могу гарантировать, всегда даст уникальный оттенок, насыщенность и яркости, а также предоставляет преимущество, которое я мог Программа желтого, чтобы казаться темнее синего, что позволяет лучше контрастировать на белом фоне и черный текст (что мне нужно).
Код, который на самом деле используется, также преобразует HSL в шестнадцатеричные коды, через RGB, чтобы я мог создавать веб-цветовые коды.
Мои вопросы: -

  1. Используя эту модель, как я могу гарантия Этот красный не появится рядом с зеленым ??
  2. Создание цветовых кодов достаточно легко, но как я могу легко увидеть их? В настоящее время я должен загружать довольно большой файл на сервер, который генерирует PDF / PNG / EPS, прежде чем загрузить его снова.
  3. Я могу сделать это с тестированием, но у кого-нибудь есть опыт использования модели HSL для генерации цветов, контрастность которых максимизируется на белом фоне с черным текстом на вершине цветов? Блюз может сделать черный текст очень трудно видеть, а желтые иногда трудно увидеть против белого ...

придавать Это на самом деле не код, который я использую, но все здесь начинается. Полный сценарий Python доступен здесь.
Ваше здоровье,
Алекс

>>> class generate_HSL_colours():
...    def __init__( self, N, shift=0, degrees=360 ):
...        dict.__init__(self)
...        self.N = N
...        hues = [ angle for angle in xrange( shift, shift+degrees , degrees / N ) ] # Default hues from 0 --> 360
...        self.colours = generate_HSL_colours()
...    def generate_HSL_colours(self,angles):
...        colours = []
...        colour = HSLColour()
...        for angle in angles:
...            cos_value = math.cos( angle * math.pi / 360 ) ## <== in radians. Degrees == cos( angle/2 ) ; so cos_value goes from 1 to -1, and 0 <= angle < 180.
...            ## Could use sin_value too...
...            saturation = 90 - (cos_value * 10)  ## Saturation from 80 --> 100
...            luminance = 50 + (cos_value * 10)   ## Lightness from 60 --> 40
...            HSLColour.hue = hue
...            HSLColour.saturation = saturation
...            HSLColour.luminance = luminance
...            colours.append( HSLColour )
...        return colours
...
...    def __iter__(self):  ## I put this in to answer a different question (see below).
...      for colour in self.colours:
...          yield repr(colour.hue, colour.saturation, colour.lightness)
... 

__iter__ Функция, написанная как ответ на вопрос здесь

Это было полезно?

Решение

  1. Эх? Тест, и если вы получите красный близко к зеленому, вы получите еще один цвет? Я не уверен, какой здесь вопрос.

  2. Вы можете генерировать PNG и открыть его локально. Это, вероятно, самый простой. Pil - хорошая библиотека для этого. http://pypi.python.org/pypi/pillow/

  3. Нет, извините, я ничего не знаю об этом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top