核心图像自动调整在 CPU 上渲染速度太慢

发布于 2024-12-13 21:12:39 字数 609 浏览 3 评论 0原文

可以理解的是,与 GPU 相比,在 CPU 上渲染时,渲染会花费更多时间。然而,用iPhone 4的相机拍摄的照片太大,无法用GPU渲染,因此必须用CPU渲染。这对于核心图像滤镜效果很好,但从 autoAdjustmentFiltersWithOptions 返回的滤镜除外:渲染使用这些滤镜修改的 CIImage 时,需要 40 多秒的时间,而使用 GPU 则需要一瞬间的时间。

重现步骤:

  1. 在 iPhone 4 上使用大于 2048x2048 的图像创建 CIImage,在 iPhone 4S 上使用大于 4096x4096 的图像创建 CIImage。
  2. 在 CIImage 上调用 autoAdjustmentFiltersWithOptions: 方法。
  3. 将返回的过滤器应用到 CIImage。
  4. 将 CIImage 渲染为 CGImageRef。

预期结果: 与使用 GPU 渲染时相比,图像花费的时间要长几秒钟。

实际结果: 渲染需要 40 秒以上。

笔记: “照片”应用程序可以比此方法更快地增强大照片。表明 iPhone 4/4S 的硬件能够实现这一点,无论照片应用程序是否使用私有 API。

有人有什么建议吗?

Understandably, when rendering on the CPU as opposed to the GPU, the rendering will take much more time. However, photos taken with the iPhone 4's camera are too large to render with the GPU, so they must be rendered with the CPU. This works well for Core Image filters, except the filters returned from autoAdjustmentFiltersWithOptions: When rendering a CIImage modified with these filters, it takes 40+ seconds, as opposed to a split second with the GPU.

Steps to Reproduce:

  1. Create a CIImage with an image larger than 2048x2048 on an iPhone 4, or 4096x4096 on iPhone 4S.
  2. Call the method autoAdjustmentFiltersWithOptions: on the CIImage.
  3. Apply the returned filters to the CIImage.
  4. Render the CIImage to a CGImageRef.

Expected Results:
The image takes a few seconds longer than it would take when using the GPU to render.

Actual Results:
It takes upwards of 40 seconds to render.

Notes:
The Photos app can enhance large photos much faster than this method. Shows that the iPhone 4/4S's hardware is capable of achieving this, regardless of whether the Photos app uses private APIs or not.

Anyone have any advice?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

○愚か者の日 2024-12-20 21:12:39

autoAdjustmentFiltersWithOptions 使用 CPU 来确定应用的过滤器。在调用之前尝试缩小图像,然后将滤镜应用到原始图像。另外,如果不需要,请考虑关闭红眼检测。

autoAdjustmentFiltersWithOptions uses the CPU to determine the applied filters. Try downscaling the image before calling that, then apply the filters to the original image. Also, consider turning off red eye detection if you don't need it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文