最近,我一直在尝试在 CIImage 上设置 CIColorCube 以创建自定义效果。这是我现在拥有的:
uint8_t color_cube_data[8*4] = {
0, 0, 0, 1,
255, 0, 0, 1,
0, 255, 0, 1,
255, 255, 0, 1,
0, 0, 255, 1,
255, 0, 255, 1,
0, 255, 255, 1,
255, 255, 255, 1
};
NSData * cube_data =[NSData dataWithBytes:color_cube_data length:8*4*sizeof(uint8_t)];
CIFilter *filter = [CIFilter filterWithName:@"CIColorCube"];
[filter setValue:beginImage forKey:kCIInputImageKey];
[filter setValue:@2 forKey:@"inputCubeDimension"];
[filter setValue:cube_data forKey:@"inputCubeData"];
outputImage = [filter outputImage];
我已经查看了 WWDC 2012 Core Image 会话,但我仍然无法正常工作。我还检查了网络,关于这个问题的可用资源很少。我上面的代码只返回一个黑色图像。
在 Apple 的开发者库中,它说:
此过滤器将 RGB 空间的映射应用到 inputCubeData 中定义的新颜色值。对于 inputImage 中的每个 RGBA 像素,过滤器使用 R、G 和 B 值来索引 inputCubeData 表示的三维纹理。inputCubeData 包含浮点 RGBA 单元格,其中包含线性预乘值。数据被组织成 inputCubeDimension 数量的 xy 平面,每个平面的大小 inputCubeDimension 由 inputCubeDimension 组成。输入像素分量 R 和 G 分别用于索引 x 和 y 中的数据,B 用于索引 z 中的数据。在 inputCubeData 中,R 分量变化最快,其次是 G,然后是 B。
但是,这对我来说毫无意义。我inputCubeData
需要如何格式化?