0

我目前正在开发一个类似“Dropbox”的应用程序,它集成了一个用于文件/图像的查看器。

问题:当用户在服务器上存储了一个非常高分辨率的图像并想在设备上查看它时,应用程序会崩溃。

示例:12000x4000 像素的全景照片。有没有办法缩小这个图像(在客户端 - iOS - 端)?

目前我正在使用这些课程:http: //vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

但我需要找到一种不使用> 300mb内存的方法......

4

3 回答 3

5

如果您控制服务器,则在服务器端进行。我不想通过 3G 下载 12000x4000 的图像,只是为了查看 640x960。

于 2011-06-09T15:57:39.967 回答
1

您应该考虑以与谷歌地图处理大图像相同的方式处理此图像,通过在 CATiledLayer 之上进行一些图像平铺,请查看 Apple 文档中的 PhotoScroller 示例。

于 2011-06-17T12:06:10.697 回答
1

查看 Apple 示例代码项目Large Image Downsizing。与 CATiledLayer 不同,它实际上会从 iOS 本地磁盘上的较大图像在内存中创建一个新的较小图像。完全缩小 CATiledLayer尝试根据需要解码整个源图像以显示它。

然而,这种技术会在全带宽范围内缩小源图像的大小,因此永远不会尝试将整个内容一次全部加载到内存中。支持 TIFF、JPEG、PNG。不支持 BMP、GIF、隔行扫描图像。

As mentioned in the ReadMe, the source image can exist in the app bundle, photo roll, or somewhere else (such as downloaded OTA).

于 2012-05-03T15:57:24.350 回答