2013-08-02 3 views
-2

Скажем, я даю функции простой голубой. Затем он должен вернуть шестнадцатеричный код или RGB для синего и синего. Я работаю в Java/androidЦветовая функция, чтобы вернуть оттенок светлее и тени темнее

+0

Ну вот ответ на ваш вопрос, самая светлая синяя белая и самая темная - черная. –

+0

Это очень легко, если вы попробуете. Ты пробовал? Что вы пробовали? (Вывод, что ваш вопрос: «Как это сделать?») – iamnotmaynard

+1

Определить * оттенок *. – OldCurmudgeon

ответ

3

Хороший способ - преобразовать его в HSL color space, отрегулировать компонент «легкость» и преобразовать обратно в RGB.

Я нашел две страницы, на которых упоминаются формулы, которые вы можете использовать, или вы можете просто попробовать google java-решение.

RGB to HSL

HSL to RGB


Другой вариант заключается в использовании YUV color space, для которых расчеты проще.

В цветовом пространстве YUV вы можете настроить темную темноту, изменив значение Y.

RGB в YUV

Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16 

V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128 

U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128 

YUV в RGB

B = 1.164(Y - 16)     + 2.018(U - 128) 

G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) 

R = 1.164(Y - 16) + 1.596(V - 128) 

Однако, вы должны зажать 'YUV' и значения 'RGB' в 0-255
(попробуйте value = value & 0xFF)

(source)

+0

Спасибо за ответ. Я посмотрю ссылки. Никогда не слышал о HSL раньше. –

+0

Вместо HSL я мог бы использовать HSV? и просто измените значение V? –

+2

Это действительно зависит от того, что вы считаете «оттенком». HSL может легко сделать цвет темнее или светлее. HSV может делать другие вещи. Я думаю, что вы хотите на самом деле HSL, но вы можете попробовать оба и посмотреть, что лучше подходит. – MightyPork

Смежные вопросы