Как найти значение между двух цветов?
У меня есть два цвета например color_1=QtGui.QColor('#0000ff') и color_2=QtGui.QColor('#ff0000')
Я хочу водить значение переменной valи получать среднее между двумя цветами
например
если val=10 то color = '#0000ff'
если val=0 то color = '#ff0000'
если val=3то color = color_1.30%+color_2.70%
если val=5то color = color_1.50%+color_2.50%
Как мне это сделать?
Ответы (3 шт):
Автор решения: S. Nick
→ Ссылка
не уверен что понимаю вас, так как вы не указали какие цвета вы ожидаете получить.
Глядя на ваши формулы предлагаю попробовать так:
c1 = '#0000ff'
c2 = '#ff0000'
color1 = f"#{hex(int(c1[1:], 16))[2:]:>06}"
color2 = f"#{hex(int(c2[1:], 16))[2:]:>06}"
color3 = f"#{hex(int(c1[1:], 16)//3 + int(c2[1:], 16)//7)[2:]:>06}"
color4 = f"#{hex(int(c1[1:], 16)//5 + int(c2[1:], 16)//5)[2:]:>06}"
print(f'{color1}\n{color2}\n{color3}\n{color4}')
Результат:
#0000ff
#ff0000
#246e0b
#330033
Автор решения: eri
→ Ссылка
c1 = '#0000ff'
c2 = '#ff0000'
c1b = bytes.fromhex(c1[1:])
c2b = bytes.fromhex(c2[1:])
color3 = bytes(map( lambda chan: int(chan[0]*0.3 + chan[1]*0.7), zip(c1b, c2b)))
print("#"+ color3.hex())
Автор решения: Yaroslav
→ Ссылка
https://docs.python.org/2/library/colorsys.html
Если просто среднее то перевод в модель RGB и среднее значение каналов.
Если делать тарнзишн то в модель HSL
Hueтон (нужно считать подобноdelta angleпоскольку это зацикленный круг)SaturationнасыщенностьLightяркость