我正在尝试将 UIImage (src)转换为 const unsigned char *
我找到了一个很好的例子as an answer on SO here。我按照示例进行了操作,但我的缓冲区是一个空字符串("")。我一直在寻找更多信息,但找不到任何信息。
这是我的代码:
CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(src.CGImage));
const unsigned char *buffer = CFDataGetBytePtr(pixelData); // buffer is ""
CFIndex bufferSize = CFDataGetLength(pixelData);
是否存在我缺少的临时步骤,或者我是否应该使用不同的方法?
以下是我错误代码的图片:
如果我尝试使用CDDataRef或NSData进行转换并不重要我在尝试将const unsigned char *复制到unsigned char *时仍然会收到EXC_BAD_ACCESS错误。
答案 0 :(得分:1)
在第二个示例中,您不是malloc
您的imageBuffer - 调试器说address = 0x0
使其显而易见。
要修复,只需要malloc imageBuffer:
imageBuffer = malloc(bufferSize);
因为您说这是Objective-C ++,您需要投射malloc
-
imageBuffer = (unsigned char*)malloc(bufferSize);
将它放在memcpy
之前。