ios - 访问 CIImage 字节,应用程序崩溃

标签 ios bitmap ciimage

我正在将一些 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/

相关文章:

iOS - 不能是连续或重复数字的 4 位整数的正则表达式?

assembly - 将处理后的位图图像写入文件

java - Android 在使用 ListView 和 Bitmap 时出现内存不足错误

android - 在 Android 中调整 Drawable 的大小

swift - 如何不使深灰色变得透明,从图像中去除背景

ios - 我如何在 ios swift 3.0 中禁用 ytplayer 中的 youtube Logo

iphone - 在ios中以相同的顺序解析来自服务器的JSON响应

ios - tableView.reloadData 和 tableView.reloadRows 有什么区别?

ios - 给定一个 CIImage,将图像数据写入磁盘的最快方法是什么?

ios - UIImage 在将其转换为 CIImage、然后转换为 CGImage 并返回 UIImage 时失去其方向