Did*_*ids 7 memory image objective-c ipad ios
我正在开发一款仅限iPad的iOS应用程序,该应用程序主要从Dropbox下载大型高质量图像(JPEG),并在UIScrollView和UIImageView中显示所选图像,允许用户缩放和平移图像.
该应用程序主要用于向有兴趣购买它们作为框架打印的潜在客户显示图像.它的工作方式是首先显示,缩放和平移图像,以显示潜在客户,如果他们喜欢图像.如果他们喜欢它,他们可以决定是否要裁剪特定区域(同时保持特定的宽高比/大小),然后将最终图像(裁剪或不裁剪)作为电子邮件附件发送到制作.
我已经面临一段时间的问题是,即使应用程序只能在新的iPad上运行(即更多内存等),我也无法找到处理图像的方法以便应用程序没有得到内存警告然后崩溃.
大多数图像的大小为4256x2832,每个图像的内存使用量至少为40MB.虽然我一次只显示一个图像,但图像裁剪(目前主要的内存/崩溃问题)是创建一个新的裁剪图像,这反过来会暂时将应用程序的总RAM使用率提高到大约120MB,从而导致崩溃.
简而言之:我正在寻找一种方法来管理非常大的图像,能够裁剪它们,裁剪后仍有足够的内存将它们作为电子邮件附件发送.
我一直在考虑实现一个单独的图像管理器,所有的视图都会使用它,它一次只能包含一个大图像,但我不确定这是否是正确的方法,或者即使它是以任何方式提供帮助.
我最终解决了这个问题。由于我无法调整 Dropbox 中原始文件的大小(客户端有他们的原因),所以我继续使用BOSImageResizeOperation,它本质上只是一个快速、线程安全的库,用于快速调整图像大小。
使用这个库,我注意到以前每个图像占用 40-60MB 内存的图像现在似乎只占用了大约一半。此外,调整大小的速度非常快,以至于原始图像从内存中释放的速度非常快,以至于 iOS 不会执行内存警告。
至此,我对这个应用程序有了进一步的了解,我感谢所有的想法、建议和评论。我希望这能让应用程序完成,并且我可以尽可能远离大图像处理,呵呵。