使用图像创建CISampler时如何设置kCISamplerAffineMatrix

时间:2019-02-22 19:40:12

标签: macos core-image cifilter

问题

我正在尝试使用指定仿射矩阵的其他选项从图像创建CISampler。文档指出以下内容以设置kCISamplerAffineMatrix:

  

关联的值是一个NSArray对象([a b c d tx ty]),该对象定义了要应用于采样器的转换。

尝试

NSArray *flipVertically = @[@(1),@(0),@(0),@(-1),@(0),@(0)];
NSDictionary *optionsDict = @{ kCISamplerAffineMatrix: flipVertically };
CISampler *sampler = [CISampler samplerWithImage:image options:optionsDict];

尝试#2

CGAffineTransform transform = CGAffineTransformMake(1, 0, 0, -1, 0, 0);
CIVector *vector = [CIVector vectorWithCGAffineTransform:transform];
NSDictionary *optionsDict = @{ kCISamplerWrapMode:  kCISamplerWrapClamp, kCISamplerAffineMatrix: vector };
CISampler *sampler = [CISampler samplerWithImage:image options:optionsDict];

结果

与在采样器中没有仿射矩阵相反,它与CIImage的矩阵相同。但是,我可以毫无问题地设置kCISamplerWrapMode,这使我认为我不知道如何理解文档中有关如何设置矩阵的描述。什么是NSArray对象([a b c d tx ty])?当我在控制台中打印矩阵时,我得到[1 0 0 1 0 0],但是我的NSArray却更像(1,0,0,-1,0,0)

0 个答案:

没有答案