从 CIImage 获取 UIImage 无法正常工作

2024-04-28

我在从 CIImage 获取 UIImage 时遇到问题。下面的代码行在 iOS6 上运行良好:(输出图像是 CIImage)

self.imageView = [UIImage imageWithCIImage:outputImage];

or

[self.imageView setImage:[UIImage imageWithCIImage:outputImage]];

当我在运行 iOS 5 的设备上运行同一行代码时,imageView 为空白。如果我记录 UIImage 的大小属性,它是正确的,但图像永远不会显示在屏幕上。

当我使用 CGImageRef(如下所示)时,它在两种设备上都可以正常工作,但当我进行堆快照分析时,它会导致巨大的内存增长。

context = [CIContext contextWithOptions:nil];
CGImageRef ref = [context createCGImage:outputImage fromRect:outputImage.extent];
self.imageView.image = [UIImage imageWithCGImage:ref scale:1.0 orientation:UIImageOrientationUp];
CGImageRelease(ref);

有谁知道为什么 UIImage imageWithCIImage 不起作用?根据 UIImage 类参考,它应该适用于 iOS5 及更高版本。另外为什么使用 CGImageRef 会导致如此巨大的堆增长?

谢谢


在 iOS 5.0 上,-imageWithCIImage:似乎从来没有正常工作过,我们被告知要使用-createCGImage:fromRect:您在上面描述的方法是将核心图像过滤器链渲染为光栅输出。

如您所见,这样做的缺点是-createCGImage:fromRect:以目标图像的大小创建一个新的 CGImageRef,并将其中心的位图传递给新的 UIImage。这可能意味着您在某一点上至少有两个完整的位图代表内存中的最终过滤帧,如果这些是大图像,则可能会导致相当大的峰值。

看起来-imageWithCIImage:已在 iOS 6.0 中修复(Core Image 从 5.0 到 6.0 做了很多改进)。虽然我只能推测为什么它不会导致内存峰值,但我敢打赌这是由于使用纹理缓存在过滤过程的输出 OpenGL ES 纹理和存储在您的文件中的最终位图之间共享内存。 UIImage。我在 GPUImage 框架中这样做是为了减少过滤大图像时的内存消耗,Core Image 这样做也是有意义的。再次强调,这只是猜测。

不幸的是,如果您想用您的应用程序支持 iOS 5.0,您似乎需要在这里进行一些版本测试,并退回到从 CIImages 获取输出的旧方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 CIImage 获取 UIImage 无法正常工作 的相关文章

  • iOS - 自动调整 CVPixelBufferRef 的大小

    我正在尝试裁剪和缩放CMSampleBufferRef基于用户的输入 基于ratio 下面的代码采用 CMSampleBufferRef 将其转换为 CVImageBufferRef 并使用 CVPixelBuffer 根据其字节裁剪内部图
  • 处于编辑模式时滑动即可删除

    我有一个使用 uitableview 的 iPhone 应用程序 我希望始终显示 重新排序 控件 并让用户滑动以删除行 我目前采取的方法是将表格视图置于编辑模式并允许在编辑模式下进行选择 self tableView editing YES
  • iPhone:OpenGL ES:检测您是否点击了屏幕上的对象(立方体)

    我已经问了一个类似的问题 这让我达到了现在的水平 但我真的需要一些帮助 这是我完成一些很酷的事情的最后一件事 在我看来哈哈 我有一个 3D 世界 我可以在其中移动 这个世界里有简单的立方体 使用函数 CGPoint getScreenCoo
  • 如何降低iphone的sdk Audioqueue的声音?

    我正在使用 Aran Mulhollan 的 RemoteIOPlayer 在 SDK iphone 中使用音频队列 我可以毫无问题 添加两个信号来混合声音 通过乘以从 wav 文件中获得的 UInt32 来增加音量 但所有其他操作都会给我
  • iPhone——是否可以在 Xcode 调试器中检查 UIView 的框架?

    当调试器在断点处停止时 我在那里找不到任何 UIView 的框架 是否有可能做到这一点 编辑 由于缺乏回应而开始赏金 需要明确的是 我正在寻找一种在不添加额外调试代码的情况下查看框架的方法 另外 如果答案是 不 你不能这样做 赏金将用于解释
  • iPhone UITableView 分页结果

    对从服务器拉取的大量结果进行分页的最佳方法是什么 就服务器而言 我可以抵消和限制结果 因此我一次只能提取 25 个结果 但是允许用户查看更多结果而不需要像应用商店一样不断向下滚动不断增长的列表的最佳方式是什么应用程序 谢谢 豪伊 要在列表底
  • Objective-C:在哪里定义宏以便随处可用?

    我有一个 iOS 应用程序 它在许多视图控制器中使用相同的字符串 数字等 所以我认为最好在一个文件中定义这些常量并在所有视图控制器实现中使用它 优点是更改一个数字 我只需要做一次 而不是在所有视图控制器中都使用该数字 实际上 我的 h 文件
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • 如何在 Core Data 中存储图像?

    只是猜测 我创建一个属性并将其类型设置为 二进制 但最终我该如何使用它呢 我猜幕后有一个 NSData 那么该属性实际上采用 NSData 吗 这个问题已经被问过很多次了 答案有点复杂 当涉及二进制数据时 您应该根据要使用的数据的预期大小来
  • 持久化 UINavigationItem 的 rightBarButtonItem 属性

    这可能是一个愚蠢的问题 但是有可能保持正确的吗 UIBarButtonItem跨由一个管理的多个视图UINavigationController 我的一系列观点通常具有相同的权利UIBarButtonItem 但是当我将新视图推送到我的UI
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 如何获取CATransition/Animation的结束事件?

    我的代码如下所示 CATransition transition CATransition animation transition duration duration 我希望得到CATransition Animation的结束事件 是否
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • 以编程方式使用 Stack Overflow 进行身份验证

    我想在我的 iPhone 应用程序中添加赞成和反对投票 MyStacks http itunes apple com gb app mystacks id360030953 mt 8 为此 我需要能够使用 Stack Overflow 对用
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • 有没有类似于 iOS 的 canOpenURL 来检查移动浏览器的 URL 方案? [复制]

    这个问题在这里已经有答案了 可能的重复 iPhone Safari 检查 JavaScript 是否支持 URL 方案 https stackoverflow com questions 627916 iphone safari check
  • 如何删除 UITableView 中的缩进?

    首先 我对此很陌生 我很可能忘记了一些非常简单的事情 问题 我正在制作一个应用程序 在 a 中显示来自 imgur com 的随机图像tableView 由于某种原因 所有单元格都会缩进少量 如下图所示 我摆弄了许多设置storyboard
  • iphone sqlite 静态链接?

    有人静态链接 sqlite 而不是使用动态链接 吗 我遇到的问题是 越狱手机的用户没有与普通 iPhone 所采用的 sqlite 版本相同的版本 因此导致崩溃 我假设在我的应用程序中静态链接已知版本的 sqlite 就是答案 我需要全文支

随机推荐

  • PHP检查字符串是否包含多个单词

    我在互联网上查找了一些可以做到这一点的东西 但它只能用一个词来实现 我正在尝试构建一个脚本来检测我的网站的错误用户名 如果用户名包含数组中的任何单词 则将检测到错误的用户名 这是我编写的代码 但未能运行 bad words array yo
  • 如何在 android 中使用 XML 形状创建向右箭头(V 形)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 How to create a right facing arrow using xml shapes in android like
  • 如何使用 MvvmCross 创建 MasterDetailPage?

    我正在尝试使用 MvvmCross 开发 Xamarin Forms 应用程序 并且我想使用汉堡菜单 MasterDetailPage 但我不知道该怎么做 我尝试了不同的方法 搜索教程和示例 但没有成功 谁能帮我 正如你在这里看到的Mvvm
  • 使用 OpenFileDialog 选择文件和文件夹

    我做了很多研究来找到这个问题的合适答案 但我失败了 我可以在这里和其他论坛上看到多个问题 但没有明确的答案带来明确的解决方案 我希望 OpenFileDialog 为我选择一个 多个文件 并允许我也选择文件夹 例如 A 多个文件或多个文件夹
  • 在SSIS中导入已合并单元格的Excel

    我的问题是在读取合并 组合列单元格的 Excel 文件时 例如 将下面的excel数据读取到数据库中 Excel 输入 ID NAME DEPT FNAME LNAME 1 Akil Tiwari IT 2 Vinod Rathore IT
  • Shell 脚本对文件进行计数,然后删除最旧的文件

    我是 shell 脚本新手 所以我需要一些帮助 我有一个充满备份的目录 如果我有超过 10 个备份文件 我想删除最旧的文件 以便仅留下 10 个最新的备份文件 到目前为止 我知道如何计算文件数 这看起来很简单 但是如果计数超过 10 我该如
  • 尝试更改冻结标题:有 FB 开发人员吗?

    在过去的几年里 这个问题已经被问过几次了 但正如 Facebook 告诉我的那样 Facebook 工程师积极参与 StackOverflow 所以我希望在这里能得到一些快乐 我们已将视频上传到 YouTube 进行了转发并确保我们对此感到
  • 如何通过特定的行分隔符读取文本文件?

    使用流读取器读取文本文件 using StreamReader sr new StreamReader FileName Encoding Default string line sr ReadLine 我想强制行分隔符应该是 n not
  • WKWebView CALayer 到图像导出空白图像

    我试图截取网页的屏幕截图 但图像始终为空白 白色 我正在使用此代码进行转换CALayer to Data 取自这里 https stackoverflow com a 41387514 4859791 extension CALayer G
  • 如何显示图片目录中的图像?

    我想显示图片库中的图片 我获取图片并绑定数据 StorageFolder picturesFolder KnownFolders PicturesLibrary IReadOnlyList
  • _CrtDumpMemoryLeaks( ) == 1 在第一行代码上?

    我正在开发一个 MFC Visual C 项目 据我了解MSDN http msdn microsoft com en us library d41t22sb 28v VS 100 29 aspx CrtDumpMemoryLeaks 应该
  • buildozer android NDK 未下载 Ubuntu

    我使用的是 Ubuntu 16 04 LTS 操作系统 我已经在 python2 和 python3 中安装了 buildozer android sdk 已安装 但 buildozer 在下载 android NDK 时显示错误 请帮我解
  • C# 中的嵌套正则表达式替换

    我不太擅长正则表达式 但我了解基础知识 我试图弄清楚如何根据匹配中的某个值进行条件替换 例如 假设我有一些嵌套的字符串结构 如下所示 id value id and value are space delimited id will nev
  • 当抛出堆栈溢出异常时在 Visual Studio 2010 中查看 CallStack

    我想在抛出 stackoverflow 异常时查看调用堆栈 即我想查明是什么递归调用导致了堆栈溢出 调用堆栈已清除 我只能看到 外部代码 编辑我遵循了 Chris Schmich 的建议 下面发布 现在我有一个如下所示的调用堆栈 这只是我正
  • GitPython 并向 Git 对象发送命令

    GitPython http gitorious org git python是一种从 python 与 git 交互的方式 我正在尝试访问基本的 git 命令 例如git commit m message 从此模块中 根据this htt
  • Symfony 4 和 Doctrine 2 从集合中删除(第一个)项目后序列化导致转换为 JSON 对象而不是数组

    我在序列化已删除第一个元素的集合时遇到很多麻烦 我有 CompaniesCollection 实体 与 Company 实体有 Many2Many 关系 ORM ManyToMany targetEntity App Entity Comp
  • 在 Xcode 4 中锁定文件

    我有一个简单的问题 在 Xcode 3 中 我可以通过单击每个文件顶部的小锁图标来锁定文件 我在 Xcode 4 中缺少这个功能 我想我只是盲目的 你能帮助我吗 该功能在 Xcode 4 中被 部分 终止 即使您可以从 文件 菜单解锁锁定的
  • WPF调整大小完成

    所以我需要按程序生成网格的背景图像 只需要 0 1 秒 因此 我可以连接到 SizeChanged 事件 但是当您调整图表大小时 它会每秒触发该事件 30 次 因此调整大小事件会明显滞后 有谁知道连接到调整大小事件并测试天气是否已完成调整大
  • (简单)boost thread_group 问题

    我正在尝试编写一个相当简单的线程应用程序 但我对 boost 的线程库很陌生 我正在开发的一个简单的测试程序是 include
  • 从 CIImage 获取 UIImage 无法正常工作

    我在从 CIImage 获取 UIImage 时遇到问题 下面的代码行在 iOS6 上运行良好 输出图像是 CIImage self imageView UIImage imageWithCIImage outputImage or sel