【问题标题】:HUGE image to show on the iPhone巨大的图像显示在 iPhone 上
【发布时间】:2012-06-03 22:38:52
【问题描述】:

好的,这是我的问题。我有一个巨大的 jpg 文件,大小为 18000 x 18000 像素 41MB。 如果您真的需要知道,它是该国家/地区提供服务的部分地图。

我的项目非常简单。我只需要能够缩放和显示这个祖父大小的图像。在 iPhone 上从外观一直到 100%。我不太确定这是否可以完成或需要多长时间。希望有任何见解。

我曾尝试使用 imageView,但我读到它确实不应该超过 1024 x 1024。这远低于我所拥有的。如果您知道如何执行此操作,请分享!

【问题讨论】:

标签: iphone ios xcode


【解决方案1】:

您应该在一定的放大率范围内将图像分割成图块。离线计算和构建这些,并将它们作为应用程序包中的单独文件发送。给定显示器的缩放比例,选择最接近的缩放大小。然后,您可以选择需要哪些图块来覆盖屏幕,并为它们制作一个网格。随着用户缩放,选择适当的图块大小。

这样做的好处是您不必将 HUGE 文件加载到内存中,只需根据需要加载即可。

这就是谷歌地图的做法。

无法给你任何代码,抱歉!

【讨论】:

  • 具体来说,Google Maps 将 CATiledLayer 图层类用于其地图视图。这就是让您拥有一个几乎巨大的图像并按需加载的原因。
【解决方案2】:

您应该遵循类似于 Google 地图和其他地图网站所做的方法。您需要将整个地图分成几部分,因此如果并非总是需要,用户就不需要加载整个地图(加上使加载时间更快)

有一些解决方案可能适合您,例如 OpenLayers,甚至可以使用您的图片创建自定义 Google 地图,如 herehere 所示

【讨论】:

    【解决方案3】:

    这是来自 Apple 的用于处理大型图像的示例,名为 PhotoScroller。图像已经平铺。如果您需要在 Cocoa 中平铺图像的示例,请查看 cimgf.com

    【讨论】:

    • 我想做 PhotoScroller 所做的事情,但预先平铺的图像来自网络而不是捆绑。我的想法是,当drawRect:rect 调用时,也许我应该开始获取操作并保存矩形。提取完成后,调用setNeedsDisplayInRect:rect 更新平铺区域。这真的是一个好方法吗?
    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2020-05-29
    • 2012-05-15
    • 1970-01-01
    • 2012-07-08
    相关资源
    最近更新 更多