【问题标题】:Crash during Quartz operations on large images对大图像进行 Quartz 操作时崩溃
【发布时间】:2011-04-01 00:56:45
【问题描述】:

我有一个可以导入图像的应用。我的应用不需要大图像,所以如果我看到一个大于 512 像素的图像,我会调整它的大小。

我正在使用一些我借用的图像大小调整功能:

http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way

调整大小功能在大多数情况下都非常有效,但我的图库中有一些 5616x3744 的大照片。当我尝试调整此图像的大小时,它有时会在执行 CGContextDrawImage() 时导致崩溃(大约一半的时间会崩溃,尽管在它崩溃之前我能够处理大约 20 张图像)。它在哪些图像上崩溃还不一致。

我还没有在模拟器中尝试过这个,但是在连接到调试器的同时在我的 iPad 上以开发模式运行。当应用程序崩溃时,它会直接退出调试器并返回信号“0”。

我想知道是否可能存在内存问题,但是当我使用分配工具运行它时,它在崩溃之前没有超过大约 44meg,并且我的应用程序没有收到内存警告。

调整大小操作是否只是分配大量内存导致内存不足崩溃而没有首先得到任何警告?

我想我可以将我的应用程序限制为较小的图像,但我想知道为什么会发生崩溃,以确保它不是随机的,以后会咬我。

非常感谢任何帮助!

谢谢, 罗恩

【问题讨论】:

  • 注意...我做了更多的调试,我可以毫无问题地加载 10 兆像素的图像(我连续尝试了 100 多个)。当百万像素数达到 20 百万像素左右时,程序就会崩溃。

标签: iphone


【解决方案1】:

我做了更多的调试,我认为正在发生的事情是操作系统正在杀死我的应用程序以分配过多的内存。由于它是在单个操作中完成的,因此操作系统没有机会通知我的应用程序内存不足,而只是终止了该应用程序。有点可悲的是,iPad 甚至无法在不被杀死的情况下调整单张 20 兆像素照片的大小。希望 iPad 3 至少有 1gig 的内存!我的 iPhone4 可以毫无问题地拍摄 70 兆像素的照片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多