我正在尝试使用指定仿射矩阵的其他选项从图像创建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];
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)
。