0

CoreImage フレームワークの CIColorCube CIFilter を使用しようとしています。任意の 3D Luts を画像に試しました。CIColorCube CIFilter に引数として渡す前に、3D luts を NSData にラップしました。しかし、私は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]; 

私は何かを逃したか助けてくださいありがとう

4

1 に答える 1

1

CIColorCube構造体のタイプが であるの0.0 to 1.0に対し、範囲内にタイプ float の RGB データが必要です。さらに、コンストラクターでは、実際にはタイプ float (" ") を考慮しています。これは、フィルターの NSData 構造に正しいバイト サイズを提供していないことを意味します。color_cube_datauint8_tcube_datasizeof(float)

次のドキュメントのリスト 5-3 を参照して ください。 -SW1

于 2013-03-08T23:50:15.227 に答える