Как использовать kCIInputTransformKey на iOS - PullRequest
0 голосов
/ 31 января 2019

Я создаю CIFilter для AVMutableVideoComposition

Поскольку он не поддерживает инструкции и фильтра, и слоя, я попытался применить необходимое преобразование непосредственно в фильтре:

    filter.setValue(transform, forKey: kCIInputTransformKey)

Где transform - это CGAffineTransform

Это вызывает исключение

Завершение работы приложения из-за необработанного исключения 'NSUnknownKeyException', причина: '[setValue: forUndefinedKey:]: этот класс не совместим с кодовым значением ключа для inputTransform ключа. '

Теперь в документе указано

Ключ для объекта NSAffineTransform, который указываетпреобразование для применения.

Но NSAffineTransform не существует в iOS.

Как использовать CGAffineTransform или iOS, или какую замену можно заменить?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Моим решением было применить преобразование непосредственно в фильтре.

Это можно сделать, применив его к исходному изображению.

request.sourceImage.transformed(by: transform)

edit: как указал Фрэнк;не все фильтры поддерживают преобразования!

0 голосов
/ 03 февраля 2019

Вам нужно обернуть преобразование в NSValue:

filter.setValue(NSValue(cgAffineTransform: transform), forKey: kCIInputTransformKey)
...