iOS - Objective C - 无法使用UInt8渲染像素

时间:2018-04-24 05:52:37

标签: ios objective-c

我尝试使用CIAreaAverage捕捉特定图像的平均颜色。 捕获操作顺利,来自过滤器的outputImage给了我单个像素CIImage

尝试使用RGB

捕获uint8_t信息时出现问题
  

"像素" (uint8_t)总是空的("")。

我非常确定我的渲染上下文不是nil,只有"render"操作出错了。

我不知道如何正确地从CIImage中删除RGB数据。

enter image description here

1 个答案:

答案 0 :(得分:1)

pixel应作为参数直接传递给render:toBitmap:rowBytes:bounds:format:函数而不是指针。

正确的函数调用应该是:

[con render: average.outputImage toBitmap: pixel rowBytes: 4 bounds: onePixel format: kCIFormatRGBA8] 

pixel已经是指针,因此通过将指针传递给pixelpixel指向的内存地址会发生变化。之后访问pixel[0]会访问现在可能无效的内存地址,这就是您的程序与EXC_BAD_ACCESS崩溃的原因。