【问题标题】:UIImage -drawAtPoint: very slow for large imagesUIImage -drawAtPoint:大图像非常慢
【发布时间】:2013-06-06 20:57:51
【问题描述】:

所以我有一个巨大的 UIImage,可能是 10,000x10,000 像素(我知道它们显然不应该超过 1024x1024,但无论如何这不是主要问题)。在屏幕上移动它(使用 -drawAtPoint 在不同点不断绘制)非常慢。

所以我将图像分割成 100x100 像素的 UIImages,并决定使用 drawAtPoint 分别绘制它们。结果更糟。

有没有更有效的方式来将 UIImages 绘制到这样的屏幕上?还是更有效的图像管理方法?谢谢。

编辑.. 当我把它分解成图块时,我只是在绘制视图中的图块。

【问题讨论】:

  • 您不是尝试一次加载所有图像,而是尝试仅加载当前可见的图像图块?也许您可以创建一个 contentSize 为 10,000 x 10,000 的 UIScrollView,并使用委托方法来检测哪些图像当前应该可见。
  • 你想要CATiledLayer?正是为了这个。更多在这里:mlsite.net/blog/?p=1857(和其他地方)

标签: ios uiview uiimage drawrect


【解决方案1】:

Apple 有一个非常好的示例代码,称为 PhotoScroller - 它展示了如何使用 CATiledLayers 以及预先平铺的图像。但是,您必须事先创建数百个图块,然后将它们包含在您的应用程序包中或下载每个图块。

在 github 上还有一个名为 PhotoScrollerNetwork 的项目,它能够下载大量仅 jpeg 的图像,并在下载时为您完成所有各种平铺。它利用了另一个开源库 libjpegturbo。

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 2018-01-18
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    相关资源
    最近更新 更多