2012-03-31 2 views
0

Я пытаюсь создать некоторые интересные эффекты для моего приложения для картинок. Я использую this project, чтобы помочь моему процессу в меняющихся кривых, яркость, контрастность и т.д.Большие капли цвета при изменении кривых UIImage?

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

- (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

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

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

ответ

0

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

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

+0

Я заменил его черно-белым градиентом, и они выглядят точными. Ну, есть небольшая черная линия на самой вершине на кодированной версии (а не на фотошопе) ... – iosfreak

+0

Хорошо, тогда что-нибудь еще происходит с изображением до или после прохождения через кривые? Оказывается ли порядок прохождения через кривые? – user1118321

+0

Ничего не происходит раньше. И нет, порядок не имеет значения. – iosfreak

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