Большие пятна цветов при изменении кривых UIImage? - PullRequest
0 голосов
/ 01 апреля 2012

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

Вот код, который я использую:

- (UIImage*)coolifyTheImage {
UIImage *image = self;
NSArray *redPoints = [NSArray arrayWithObjects:
                      [NSValue valueWithCGPoint:CGPointMake(0, 43)],
                      [NSValue valueWithCGPoint:CGPointMake(52, 136)],
                      [NSValue valueWithCGPoint:CGPointMake(107, 201)],
                      [NSValue valueWithCGPoint:CGPointMake(255, 255)],
                      nil];
NSArray *greenPoints = [NSArray arrayWithObjects:
                        [NSValue valueWithCGPoint:CGPointMake(0, 27)],
                        [NSValue valueWithCGPoint:CGPointMake(54, 86)],
                        [NSValue valueWithCGPoint:CGPointMake(214, 219)],
                        [NSValue valueWithCGPoint:CGPointMake(214, 255)],
                        nil];
NSArray *bluePoints = [NSArray arrayWithObjects:
                       [NSValue valueWithCGPoint:CGPointMake(0, 86)],
                       [NSValue valueWithCGPoint:CGPointMake(49, 86)],
                       [NSValue valueWithCGPoint:CGPointMake(122, 100)],
                       [NSValue valueWithCGPoint:CGPointMake(201, 167)],
                       [NSValue valueWithCGPoint:CGPointMake(255, 167)],
                       nil];

image = [[[image applyCurve:redPoints toChannel:CurveChannelRed] 
          applyCurve:greenPoints toChannel:CurveChannelGreen]
         applyCurve:bluePoints toChannel:CurveChannelBlue];

return image;
}

Это работаеткрасиво на нижней половине изображения, но не на верхней.Вот как это должно выглядеть (скриншот взят из фотошопа):

enter image description here

Вот настройки в фотошопе:

enter image description here

enter image description here

И вот как это получается после того, как я запустил код на нем:

enter image description here

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

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 01 апреля 2012

Это всего лишь предположение, но уверены ли вы, что вы получаете отрезок прямой между двумя последними конечными точками на зеленой и синей кривых? Как правило, если вы примените кубическую кривую так же, как в Photoshop, вы получите большой горб или провал в этом разделе. В Photoshop есть специальная обработка конечных точек, где все после них прямолинейно, но в целом математика не работает так.

EDIT: Фактически, вы можете проверить это, пропустив градиент от черного к белому и посмотрев, каковы результаты. В идеале одна строка сканирования должна выглядеть как ваш график, но если это не так, то это проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...