我尝试使用CIAreaAverage
捕捉特定图像的平均颜色。
捕获操作顺利,来自过滤器的outputImage给了我单个像素CIImage
。
尝试使用RGB
uint8_t
信息时出现问题
"像素" (uint8_t)总是空的("")。
我非常确定我的渲染上下文不是nil
,只有"render"
操作出错了。
我不知道如何正确地从CIImage
中删除RGB数据。
答案 0 :(得分:1)
pixel
应作为参数直接传递给render:toBitmap:rowBytes:bounds:format:
函数而不是指针。
正确的函数调用应该是:
[con render: average.outputImage toBitmap: pixel rowBytes: 4 bounds: onePixel format: kCIFormatRGBA8]
pixel
已经是指针,因此通过将指针传递给pixel
,pixel
指向的内存地址会发生变化。之后访问pixel[0]
会访问现在可能无效的内存地址,这就是您的程序与EXC_BAD_ACCESS
崩溃的原因。