2013-02-25 58 views
0

我想使用CIColorCube CIFilter的CoreImage框架,我試圖任意3D Luts的圖像,我把三維的luts包裹到NSData之前作爲參數傳遞給CIColorCube CIFilter。但我得到EXC_BAD_ACCESS例外。 這是我的代碼:格式化數據CIColorCube

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]; 

難道我錯過了什麼,請幫助 感謝

+0

[_colorCube的setValue:color_cube_data forKey:@ 「inputCubeData」]; – iPatel 2013-02-25 13:19:41

+0

我想你是在談論[filter setValue:cube_data forKey:@「inputCubeData」];線,我認爲這不是一個問題 – 2013-02-26 06:04:12

回答

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