我目前正在制作一个类似“Dropbox”的应用程序,它有一个集成了文件/图像的查看器。
问题:当用户在服务器上存储了一个非常高分辨率的图像并希望在设备上查看它时,该应用程序将崩溃。
示例:12000x4000像素的全景照片。有没有办法缩小这个图像(在客户端 - iOS - 侧)?
目前我正在使用这些课程:http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
但我需要找到一种不使用> 300mb内存的方法......
答案 0 :(得分:5)
如果您控制服务器,那么在服务器端执行。我不想通过3G下载12000x4000图像只是为了查看640x960。
答案 1 :(得分:1)
你应该考虑像谷歌地图处理大图像一样处理这个图像,在CATiledLayer上做一些图像平铺之王,请查看Apple文档中的PhotoScroller示例。
答案 2 :(得分:1)
查看Apple示例代码项目Large Image Downsizing。 与CATiledLayer不同,它实际上会在iOS本地磁盘上的较大图像中在内存中创建一个新的较小图像。完全缩小CATiledLayer 将尝试根据需要解码整个源图像以显示它。
然而,这种技术在全宽带中缩小了源图像的尺寸,因此从未尝试过将所有内容全部加载到内存中。支持TIFF,JPEG,PNG。不支持BMP,GIF,隔行扫描图像。
如自述文件中所述,源图像可以存在于应用程序包,照片滚动或其他位置(例如下载的OTA)中。