objective-c - Objective c UIImage 到 char* 转换返回空字符串

标签 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 错误。

最佳答案

在第二个示例中,您没有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/

相关文章:

c - 通过 fgets 从 txt 文件检索的文本的某些部分在 c 中丢失了

c - InterlockedBitTestAndReset64() 未定义

ios4 - 从 UIImages 数组创建视频并将视频保存到 iPhone 库。 AVAsset库+AVFoundation

ios - 生成的 CGImage 总是模糊

ios - 尝试使用 NSTimer 为 UILabel 提供脉冲效果,但计时器始终相互冲突

objective-c - 在 iOS 8(Xcode 6) 中使用未声明的标识符 'GL_BGRA_EXT' 错误?

C输出问题

ios - 如何使用由 UIImage 类别创建的图像

iphone - 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

ios - iOS 7 iphone 5 中的可达性响应错误的状态代码