如何在iOS 5中为CIAffineTransform设置inputTransform

10

我已经找了一段时间的答案,但没有找到。我试图使用iOS 5 Beta中的CIAffineTransform,但遇到了问题。文档说“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个回答

24

我找到了解决方案,我只是在错误的地方寻找。

与其在CIImage上使用CIAffineTransform滤镜,实际上CIImage提供了一个叫做:

-(CIImage*) imageByApplyingTransform:(CGAffineTransform)transform

这个方法返回一个应用了CGAffineTransform参数的图像。

希望对某些人有所帮助 :)


谢谢,这个信息在两年后仍然很有帮助!我只是好奇为什么当我使用CIAffineTransform时,我的过滤器会返回nil,无论是使用[NSValue valueWithBytes:&xform objCType:@encode(CGAffineTransform)]还是[NSValue valueWithCGAffineTransform:xform]。 - CodeBrew
这很有帮助,但要注意它是iOS 8+,所以如果您支持iOS 7或更低版本,则必须使用@William Jockusch的解决方案。 - Jeremy Wiebe

2
根据Core Image Filter Reference
CGAffineTransform xForm = whatever;
[myFilter setValue:[NSValue valueWithBytes:&xForm objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接