Как установить inputTransform для CIAffineTransform в iOS 5 - PullRequest
8 голосов
/ 10 августа 2011

Я долго искал ответ на этот вопрос, но ничего не нашел.Я пытаюсь использовать CIAffineTransform, кроме iOS 5 Beta, и столкнулся с проблемой.Документация гласит, что свойство inputTransform принимает NSAffineTransform, но, насколько я могу судить, нет способа создать один из них в iOS, все мои исследования показывают, что этот класс предназначен для MacOS (поправьте меняесли я ошибаюсь).

Если это так, то какое значение я помещаю в inputTransform?

Вот простой код, объясняющий, что я пытаюсь выполнить.

CIImage* result = "Some CIImage";


CIFilter* filter = [CIFilter filterWithName:@"CIAffineTransform"];
[filter setValue:result forKey:kCIInputImageKey];

[filter setValue:transform forKey:@"inputTransform"]; //What type/class of value do I set here if I can't use an NSAffineTransform

result = [filter outputImage];

Любая помощь будет высоко оценена.

Ответы [ 2 ]

22 голосов
/ 11 августа 2011

Я нашел решение, я просто искал не в том месте.

Вместо использования фильтра CIAffineTransform в CIImage, CIImage фактически предоставляет метод, называемый:

-(CIImage*) imageByApplyingTransform:(CGAffineTransform)transform

Этот метод возвращает изображение, к которому применен аргумент CGAffineTransform.

Надеюсь, это кому-нибудь поможет:)

1 голос
/ 18 октября 2012

По Ссылка на фильтр базовых изображений .

CGAffineTransform xForm = whatever;
[myFilter setValue:[NSValue valueWithBytes:&xForm objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"];
...