【问题标题】:Way too many images, app size too big图片太多,应用程序太大
【发布时间】:2015-05-06 04:36:20
【问题描述】:

我已经检查过这个问题 (App size is too big because of too many images)

我使用了 tinypng.com,就像它为我的图片所建议的那样,但我的文件仍然太大,而且有这么多,我的应用正在寻找可能的大小。

基本上我的计划是做一个汽车测验类型的游戏,我有一个几乎所有制造过的汽车的图像(通过 wikicommons 的公共领域获得),Photoshop 关闭所有徽章(我已经完成了一千个),你试着看看你是否还能猜出这辆车。

考虑到 iPad 的 Retina 分辨率,我发现这个应用程序在内存空间方面将是巨大的。

缩小后的照片平均大小约为 300kb。好像很高?

如何制作一个拥有数千张高质量图片的 iOS 应用? 我是否必须创建一些无线数据库或其他东西?我对此一无所知。

另外我只写了大约一年的代码,所以如果有任何相关的代码可能有帮助,请告诉我。

任何提示或技巧将不胜感激。谢谢!

【问题讨论】:

  • 为什么不从网络服务中提取图像?
  • 看我对此一无所知。我可以使用我自己的 photoshopped 图像吗?你能指出我正确的方向吗?

标签: ios xcode image memory size


【解决方案1】:

您可能不需要数据库或一些强大的在线系统来组织和检索您的照片,但显然将所有这些文件存储在设备上是行不通的。

  1. 购买虚拟主机。每月 5 美元,您可以获得无限的在线存储和带宽。 Godaddy、Bluehost、Hostgator、Dreamhost 等......

  2. 使用他们的在线文件管理器之一,或下载像 Filezilla 这样的免费 FTP(文件传输协议)客户端。

  3. 使用他们的在线文件管理器,或连接 FileZilla,只需将您的图像传输到网络服务器。

  4. 然后,手头有一个链接到您的汽车图像的 URL 列表,使用下面的代码从 URL 加载图像:

    NSURL *url = [NSURL URLWithString:path];

    NSData *data = [NSData dataWithContentsOfURL:url];

    UIImage *img = [[UIImage alloc] initWithData:数据缓存:NO];

  5. ** 当您显示依赖于下载信息或照片的界面时,您应该显示一些占位符(“正在加载...”、框或“加载微调器”),其中的内容将一直持续到下载图像。

【讨论】:

  • 哇,好吧。我明白你在说什么。我会告诉你进展如何!
  • George Poulos 的评论可能也有帮助。确保您没有使用大于所需大小的图像。对于手持设备上的图像来说,300kb 听起来确实有点太大了,但这可能是正确的。
【解决方案2】:

看看at this link,应该提供如何在应用程序内下载图像的信息。 我已经使用了AFNetworking,这真的很容易处理。如果你想使用它,请查看类:

#import <AFNetworking/UIImageView+AFNetworking.h>

并检查方法setImageWithURLRequest:placeholderImage:success:failure:

要在下载后保存UIImage,您可以use this method 并将它们保存在应用程序目录中的本地。我认为这将是最简单的方法。如果它变得更大,您可以尝试使用sqlite 来存储UIImages 的路径。

【讨论】:

  • 我是否需要拥有自己的网站服务器才能做到这一点?
  • 通常它会按照@Adama 描述的方式工作。您只需要考虑将下载您的应用程序的用户,必须有一个服务器可以处理这个问题。但一开始我建议你在你的 Mac 上设置一个 localhost 并从本地地址下载东西。
  • 你的意思只是为了测试对吧?但之后我需要自己的网站吗? godaddy 的任何网站网址都可以使用吗?还是它们的特殊类型?
  • 不,我们不是在谈论域。您需要一个提供商来托管您设置服务器的硬件(如 apache f. e.),并且您有大量的网络空间可以保存图像。您还需要设置一个 api,您可以在其中从应用程序发送请求并从中接收图像。但也许你看看 parse.com 。您应该知道请求的数量是否会变得更大,最终您还必须支付很多钱。
  • 我看过 Parse,它似乎在一定限度内是免费的,但一旦超过这个限度,它每月收费 200 美元,这超出了我的价格范围。我真的很想让这个应用程序尽可能便宜。所以我在看 apache.org,他们是提供者吗?我还需要域名吗?对不起,所有这些东西对我来说都是全新的。
【解决方案3】:

我有一个非常相似的问题。你可能不会犯同样的错误,但无论如何我都会分享。

我在 Photoshop 中制作了具有非常大尺寸的图像, 我只是将它们缩小到 Xcode 故事板中所需的大小。
这会导致每个图像的文件大小都过大。

因此,解决方案是将每个图像缩小到应用程序所需的精确尺寸,然后再上传到 Xcode。

这大大减少了图像的内存使用量。

【讨论】:

  • 我也想为 iPad Retina 制作这个,它是 2048 x 1536。在 300kb 时,我的图像尺寸是 942x576。这看起来是正确的还是必要的? (我也有它,所以你可以捏缩放图像以获得更好的外观)
  • 这似乎是正确的,假设您的图像将占据大约 1/3 的屏幕。如果不是,则有减小尺寸的空间。我唯一可以推荐的另一件事是确保从 Photoshop 中导出图像尽可能小,例如确保导出“优化”的 png。如果所有这些仍然导致存储过多,您可能必须听取其他答案的建议。
  • 是的,我知道了。我将不得不使用其他答案。看起来这个应用程序变得更加复杂了。
【解决方案4】:

您可能应该使用系统文件来存储图像并将路径保存在数据库中,因为:

  1. 数据库存储通常比文件系统存储更昂贵

  2. 照片大小的不同会显着增加行大小。

最佳做法是将您的图像命名为相应的主键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2016-12-24
    • 1970-01-01
    相关资源
    最近更新 更多