2014-11-06 5 views
-1

Я хочу динамически перекрасить изображения, которые краснеют в любой цвет, который хочет пользователь (кроме черно-белого). Это позволит мне уменьшить объем работы графического художника. Обычно я делаю это, применяя фильтр смены оттенков iOS. Для этого необходимо ввести число в диапазоне 0-1.0, чтобы указать, насколько должен быть изменен оттенок.iOS Как рассчитать изменение оттенка между двумя UIColors для подключения к фильтру изображения?

Вот как мой контроль цветового тона сдвиг выглядит в данный момент: enter image description here

Я пытаюсь сделать процесс проще, позволяя пользователю выбрать «окончательный» цвет вместо ввода номера оттенок сдвига.

Для Например:

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

-(float)hueShiftFromColor:(UIColor*)originalColor toDesiredColor:(UIColor*)desiredColor; 

-ИЛИ- если я могу использовать мой код, чтобы попробовать пиксель в какой-то момент и найти его цвет, то нужен только желаемый цвет:

-(void)applyHueShiftFilterToBaseImage:(UIImage*)baseImage desiredColor:(UIColor*)desiredColor; 

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

+0

Что вы пробовали? Документация Apple на «UIColor» вам вообще помогла, прежде чем вы спросили о stackoverflow? https://developer.apple.com/library/ios/documentation/uikit/reference/UIColor_Class/#//apple_ref/occ/instm/UIColor/getHue:saturation:brightness: alpha: –

+0

Похоже на разумный вопрос! –

ответ

1

Посмотрите на метод

- (BOOL)getHue:(CGFloat *)hue 
    saturation:(CGFloat *)saturation 
    brightness:(CGFloat *)brightness 
     alpha:(CGFloat *)alpha 

Так что вы можете сделать:

CGFloat hue1; 
CGFloat hue2; 

затем:

[color1 getHue:&hue1 saturation:nil brightness:nil alpha:nil];  
[color2 getHue:&hue2 saturation:nil brightness:nil alpha:nil]; 

и теперь вы можете получить разницу между значениями 2 оттенка.

NSLog(@"hue 1 = %f; hue 2 = %f", hue1, hue2); 
NSLog(@"hue shift = %f", hue1 - hue2); 

Этих значения я получаю с помощью redColor и blueColor формы UIKit:

hue 1 = 1.000000; hue 2 = 0.666667 
hue shift = 0.333333 

Надеется, что это помогает.

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

  • Нет связанных вопросов^_^