Objective c UIImage to char * conversion返回空字符串

时间:2014-06-06 18:18:09

标签: objective-c c uiimage objective-c++

我正在尝试将 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);

是否存在我缺少的临时步骤,或者我是否应该使用不同的方法?

以下是我错误代码的图片:

enter image description here

如果我尝试使用CDDataRef或NSData进行转换并不重要我在尝试将const unsigned char *复制到unsigned char *时仍然会收到EXC_BAD_ACCESS错误。

1 个答案:

答案 0 :(得分:1)

在第二个示例中,您不是malloc您的imageBuffer - 调试器说address = 0x0使其显而易见。

要修复,只需要malloc imageBuffer:

imageBuffer = malloc(bufferSize);

因为您说这是Objective-C ++,您需要投射malloc -

imageBuffer = (unsigned char*)malloc(bufferSize);

将它放在memcpy之前。

祝你好运!