iphone - IOS中的巨大PNG图像

标签 iphone ios image

我的应用程序中有很多 png 图像,这导致我的应用程序重载了我的 iPad2 设备的实际内存使用量。我的整个应用程序文件夹有很多声音文件和 png 图像只有大约 50-60 MB 预编译,90 MB 在设备上,但我仍然很容易在运行时达到 300MB++..ViewControllers 在以前的 ViewControllers 等之上。我也在尝试修复..

我觉得奇怪的是,通过仅显示一个背景 .png 图像,我在实际内存使用量上增加了 12 MB(在仪器中看到)。我用来在 Storyboard中填充 ImageView 图像的图像在我的项目文件夹中只有 700 KB。将其取出或将图像字段留空可为我节省 12 MB 的内存...

我在应用程序中使用了很多这些背景图像以及其他前景图像,这占用了大量空间。

任何建议或帮助表示赞赏 谢谢。

最佳答案

嗯,磁盘空间中的 700kb 图像并不意味着内存中的 700kb 图像。它在存储在磁盘上时被压缩,但当它被放入内存时 - 它的大小会增加。

如果您在项目中使用大量图像,我建议您使用[UIImage imageWithContentsOfFile:] 方法。它不会在内部缓存图像,与使用 [UIImage imageNamed:] 相比,您可以更好地控制内存。

对我来说,一般的经验法则是这样。如果图像很大并且在应用程序中使用一次 -> [UIImage imageWithContentsOfFile:],但如果图像在应用程序的许多地方重复使用 -> [UIImage imageNamed:].

此外,如果你必须使用 .png 格式,因为它具有透明度,那么你可以尝试给 .webp 一个机会。此格式在 ios 中不受正式支持,但在 github 上有自定义实现你可以抢劫。

更新:

我个人根本不在我的应用程序中使用界面生成器,因为我发现它非常耗时且缓慢。相反,我以编程方式创建所有 View ,这为我提供了更大的灵 active ,例如在 [UIImage imageWithContentsOfFile:][UIImage imageNamed:] 之间进行选择。您可以只为 UIImageView 设置一个 Outlet,然后在代码中设置实际图像。 至于 png,在 iOS 中没有首选图像类型。这真的取决于你的情况。如果你需要透明度 -> png,只需要一个平面图像 -> jpg。这只是一个简单的例子。 至于 .webp,正如我已经提到的,这种格式在 iOS 中不受官方支持,但您可以添加自己的支持。基本上,.webp 可以让您替换 .png 并减小项目文件夹的大小,而不会失去图像的透明度。

希望这对您有所帮助,干杯!

关于iphone - IOS中的巨大PNG图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622410/

相关文章:

iphone - 需要在 iOS 项目的 C++ 类中使用 fopen 写入文件

objective-c - AFNetworking 下载多个文件内存占用

python - Matplotlib 缩放与 wxPython ScrolledWindow 结合使用

iphone - UITextView 高度在 iPhone 上不起作用

ios - UITableViewCells 向下滚动时滚动到标题

ios - 尝试向 Core Data 添加新记录时出错

java - 使用 JList 为图像查看器显示图像

ios - Swift 编译错误 "Unknown type name"和 "Expected a type"

ios - 打开应用程序时表格 View 未刷新

ios - React Native 0.26 在显示 Assets 库中的图像时找不到合适的图像 URL 加载器