我正在尝试将 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 错误。
最佳答案
在第二个示例中,您没有malloc
您的imageBuffer - 调试器说address = 0x0
很明显。
要修复,只需 malloc imageBuffer:
imageBuffer = malloc(bufferSize);
因为你说这是 Objective-C++,所以你需要强制转换 malloc
-
imageBuffer = (unsigned char*)malloc(bufferSize);
把它放在你的memcpy
之前。
祝你好运!
关于objective-c - Objective c UIImage 到 char* 转换返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088289/