我正在将一些 OSX 代码移植到 iOS,并且需要访问 CIImage 的字节。 OSX 版本使用 NSBitmapImageRep 执行此操作,但在 iOS 上我需要跳过一些障碍。
这是我要运行的代码
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent];
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef data = CGDataProviderCopyData(provider);
CGRect extent = [image extent];
//png.Load((UInt8*)CFDataGetBytePtr(data), extent.size.width, extent.size.height, true);
CFRelease(data);
//CGDataProviderRelease(provider);
它按预期工作,但过了一会儿应用程序崩溃了。我不知道为什么。我正在猜测内存泄漏/越界内存。据我所知,一切都被正确释放了……如果我将这些行注释掉,没有任何崩溃。如果我在应用程序中回复 CGDataProviderRelease 几乎立即崩溃。
最佳答案
我认为您需要 CFRelease(cgImage) - 您使用“创建”来创建它不是吗?
关于ios - 访问 CIImage 字节,应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11676415/