【问题标题】:Formatting data CIColorCube格式化数据 CIColorCube
【发布时间】:2013-04-04 06:09:34
【问题描述】:

我正在尝试使用 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]; 

我是否遗漏了什么,请帮忙 谢谢

【问题讨论】:

  • [_colorCube setValue:color_cube_data forKey:@"inputCubeData"];
  • 我想你说的是 [filter setValue:cube_data forKey:@"inputCubeData"];行,我认为这不是问题

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


【解决方案1】:

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

请参阅以下文档中的清单 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

【讨论】:

    猜你喜欢
    • 2013-03-25
    • 2012-06-24
    • 2015-12-18
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2016-05-19
    • 1970-01-01
    相关资源
    最近更新 更多