Как найти значение между двух цветов?

У меня есть два цвета например 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 яркость
→ Ссылка