我正在开发一款仅支持 iPad 的 iOS 应用程序,该应用程序实质上是从 Dropbox 下载大型、高质量图像 (JPEG),并在 UIScrollView 和 UIImageView 中显示所选图像,从而允许用户缩放和平移图像。
该应用程序主要用于向有兴趣购买相框照片的潜在客户展示图像。它的工作方式是首先显示图像,缩放和平移以显示潜在客户(如果他们喜欢图像)。如果他们喜欢,他们可以决定是否要裁剪特定区域(同时保持特定的纵横比/大小),然后将最终图像(裁剪或不裁剪)作为电子邮件附件发送到生产。
我现在一直面临的问题是,即使该应用程序只能在新 iPad 上运行(即更多内存等),我无法找到处理方法图像,以便应用不会收到内存警告然后崩溃。
大多数图像的大小为 4256x2832,这使每个图像的内存使用量至少达到 40MB。虽然我一次只显示一个图像,但图像裁剪(这是目前的主要内存/崩溃问题)正在创建一个新的裁剪图像,这反过来又会暂时将应用程序的总 RAM 使用量提高到大约 120MB,导致崩溃。
简而言之:我正在寻找一种方法来管理非常大的图像,能够裁剪它们并且在裁剪后仍有足够的内存来将它们作为电子邮件附件发送。
我一直在考虑实现一个单例图像管理器,所有 View 都将使用它,并且一次只包含一个大图像,但我不确定这是否是正确的方法,或者即使无论如何都会有帮助的。
最佳答案
解决此问题的一种方法是平铺图像。您可以将大的解压缩图像作为一系列图 block 保存到“磁盘”中,并且当用户平移时,仅拉出您需要实际显示的图 block 。您一次只需要内存中的 1 个图 block ,因为您将其绘制到屏幕上,然后将其丢弃并加载下一个图 block 。 (您可能希望将可见图 block 缓存在内存中,但这是一个实现细节。即使将整个图像作为图 block 也可以减轻内存压力,因为您不需要一个大的连续 block 。)这就是 Photoshop 等应用程序的处理方式遇到这种情况。
关于ios - 大 (UI) 图像内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20220057/
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
ruby如何管理内存。例如:如果我们在执行过程中采用C程序,则以下是内存模型。类似于这个ruby如何处理内存。C:__________________|||stack|||------------------||||------------------|||||Heap|||||__________________|||data|__________________|text|__________________Ruby:? 最佳答案 Ruby中没有“内存”这样的东西。Class#allocate分配一个对象并返回该对象。这就是程序
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里