ios - 格式化数据 CIColorCube

标签 ios nsdata exc-bad-access core-image cifilter

我正在尝试使用CoreImage框架的CIColorCube CIFilter,我尝试了对图像的任意3D Luts,我将3D luts包装到NSData,然后作为参数传递给CIColorCube CIFilter。但我收到 EXC_BAD_ACCESS 异常.. 这是我的代码:

CIContext *context = [CIContext contextWithOptions:nil]; CIFilter *filter = [CIFilter filterWithName:@"CIColorCube"];

uint8_t color_cube_data[4096*4] = {
    153, 255, 255, 1,
    170, 255, 255, 1,
    186, 255, 255, 1,
    204, 255, 255, 1,
    221, 255, 255, 1,
    237, 255, 255, 1,
    255, 255, 255, 1};
NSData * cube_data =[NSData dataWithBytes:color_cube_data length:4096*sizeof(float)*4];

[filter setValue:originalImage forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:16] forKey:@"inputCubeDimension"];
[filter setValue:cube_data forKey:@"inputCubeData"];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage =[context createCGImage:result fromRect:originalImage.extent];
imgVw_Result.image=[UIImage imageWithCGImage:cgImage]; 

我是不是错过了什么,请帮忙 谢谢

最佳答案

CIColorCube 需要 0.0 到 1.0 范围内 float 类型的 rgb 数据,而您的 color_cube_data 结构的类型为 uint8_t。此外,在您的 cube_data 构造函数中,您实际上已经考虑了 float 类型(“sizeof(float)”),这意味着您没有提供正确的字节大小你的过滤器的 NSData 结构。

请参阅以下文档中的 list 5-3: https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/CoreImaging/ci_filer_recipes/ci_filter_recipes.html#//apple_ref/doc/uid/TP30001185-CH4-SW1

关于ios - 格式化数据 CIColorCube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15067914/

相关文章:

ios - 如果 View Controller 不再存在,则在异步调用中出错

c++ - 请帮助 "EXC_BAD_ACCESS(Code 2)"

c - EXC_BAD_ACCESS 在函数调用后立即分配给变量

ios - Swift 中不同时间间隔刷新 TableView Cell 从 URL 获取数据

ios - 蓝牙耳机无法用作 iOS 和 OpenEars 的录音捕获

ios - 获取从 iPhone 获取的 Gif 图像的 NSData 时无法获取 Gif 图像帧数

macos - Null 传递给需要非空参数的被调用者

iphone - 在运行 iOS 时,以编程方式即时更改语言

objective-c - 如何将 “bool” 值存储在 NSMutableArray* 或 NSMutableDictionary* 中?以 bool 形式传入的 JSON 数据的长期问题

objective-c - 将 NSTextView 格式的文本转换为 NSData(并返回)