首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS 4.0上使用大型图像时应用程序崩溃

在iOS 4.0上使用大型图像时应用程序崩溃
EN

Stack Overflow用户
提问于 2010-09-09 18:28:57
回答 3查看 4.2K关注 0票数 4

我在滚动视图上显示大图像时遇到了问题,图像是2,4-4,7 MB。它在3GS和模拟器上运行良好。但是每当我尝试在3G或iPod Touch 2G上运行时,它就会崩溃。

我在网上搜索发现了"imageNamed是邪恶的“这篇文章。好的,我将所有的映像调用都更改为imageWithContentsOfFile:但是它仍然崩溃,我看到的唯一不同是,在我离开视图之后,现在图像被取消了。但是内存的使用率仍然很高。

这是一张乐器的截图。

第一个峰值是我在启动时显示的视频,然后在桌面视图中显示了大量的图像,直到那时没有问题。

当我输入1,1mb - 2576 x 1000图片时,

当我输入4,8mb - 7822 x 1000图片时,

顺便说一下,该应用程序是在iOS 4和3.1.2上测试的。

你有什么建议吗?因为这个问题把我逼疯了。

从现在起非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-20 00:48:48

我最后使用了UIWebView,我不得不使用更小的( MB,而不是尺寸)图像,但它正在工作,唯一的问题是我不能缩放.使用scalePageToFit,我可以缩放,但图像适合水平,而不是垂直,那是这样。

我会尽量更新这个问题。

如果有人有这个问题,我会建议使用webview或适配器版本的three20图像查看器,更好地处理内存。

票数 0
EN

Stack Overflow用户

发布于 2010-09-09 19:31:16

最近,我在3G上测试一个应用程序时遇到了同样的问题。最后,我缩小了任何超过最大像素数的图像(我发现200万像素似乎在我的3G上可靠工作,但HotPaw2的答案似乎表明,100万像素可能是一个更安全的赌注)。

代码语言:javascript
复制
UIImage *image = // ...;
if (image.size.width * image.size.height > MAX_PIXELS) {
    // calculate the scaling factor that will reduce the image size to MAX_PIXELS
    float actualHeight = image.size.height;
    float actualWidth = image.size.width;
    float scale = sqrt(image.size.width * image.size.height / MAX_PIXELS);

    // resize the image
    CGRect rect = CGRectMake(0.0, 0.0, floorf(actualWidth / scale), floorf(actualHeight / scale));
    UIGraphicsBeginImageContext(rect.size);
    [image drawInRect:rect];
    UIImage *imageToDraw = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // imageToDraw is a scaled version of image that preserves the aspect ratio
}

苹果还提供了一个开发图片库应用程序的例子,该应用程序使用CATiledLayer绘制非常大的图像。他们的例子使用的图像已经被分割成适当大小的瓦片提前。在您的iOS应用程序中,可以动态地将图像分割成块,但是在设备上这样做非常慢。关于PhotoScroller示例,请查看今年的WWDC的第104号会话。

票数 4
EN

Stack Overflow用户

发布于 2010-09-09 18:37:43

iPhone 3G和iPod Touch 1G/2G中的GPU只有1k×1k纹理的空间,这似乎也适用于2D图像渲染。任何更大的需要平铺,以适应硬件图形渲染器。

3GS和更新版本有一个不同的GPU,可以支持更大的纹理,因此图像。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3679457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档