我已经查看了这个问题(App size is too big because of too many images)
我使用了tinypng.com,就像它为我的图片所建议的那样,但我的文件仍然太大了,而且有很多这样的应用,我的应用程序正在寻找可能的演出。
基本上我的计划是有一个汽车测验类型的游戏,在那里我只有几乎每辆汽车的图像(通过公共领域关闭wikicommons),photoshop所有徽章关闭(我已经完成了一千个),你试着看看你是否还能猜到这辆车。
考虑到iPad Retina分辨率,我看到这个应用程序在内存空间方面将是巨大的。
平均照片减少约300kb。这看起来很高吗?
如何制作拥有数千张质量图像的ios应用? 我是否必须创建一些无线数据库或其他东西?我对此一无所知。
此外我只编写了大约一年的代码,所以如果有任何相关的代码可能有帮助,请告诉我。
任何提示或技巧都将不胜感激。谢谢!
答案 0 :(得分:1)
您可能不需要数据库或一些强大的在线系统来组织和检索您的照片,但很明显,将所有这些文件存储在设备上是行不通的。
购买虚拟主机。每月5美元,您可以获得无限的在线存储空间和带宽。 Godaddy,Bluehost,Hostgator,Dreamhost等......
使用其中一个在线文件管理器,或下载Filezilla等免费的FTP(文件传输协议)客户端。
使用他们的在线文件管理器或与FileZilla连接,只需将您的图像传输到网络服务器上。
然后,通过手头链接链接到汽车图片的网址列表,使用以下代码从网址加载图片:
NSURL * url = [NSURL URLWithString:path];
NSData * data = [NSData dataWithContentsOfURL:url];
UIImage * img = [[UIImage alloc] initWithData:data cache:NO];
**当您显示依赖于下载信息或照片的界面时,您应该显示一些占位符(“正在加载...”,一个框或“加载微调器”)其中的内容将继续下载图像。
答案 1 :(得分:1)
看看at this link,应提供有关如何在应用内下载图片的信息。
我已经使用了AFNetworking
这很容易处理。如果您想使用它,请查看该类:
#import <AFNetworking/UIImageView+AFNetworking.h>
并检查方法setImageWithURLRequest:placeholderImage:success:failure:
要在下载后保存UIImage
,您可以use this method并在apps目录中将其保密。我认为这将是最简单的方式。如果它会变大,您可以尝试使用sqlite
来存储UIImages
的路径。
答案 2 :(得分:0)
我有一个非常类似的问题。你可能没有犯同样的错误,但无论如何我都会分享。
我在Photoshop中使用非常大的维度制作图像,我只是将它们缩小到Xcode的故事板中所需的大小。
这导致每个图像的文件大小不必要地大。
因此,解决方案是在上传到Xcode之前将每个图像缩小到应用程序所需的精确尺寸。
这大大减少了图像的内存使用量。
答案 3 :(得分:0)
您应该使用系统文件来存储图像并将路径保存在数据库中,因为:
数据库存储通常比文件系统存储更昂贵
照片尺寸的差异会大幅增加行尺寸。
然后,最佳做法是将图像命名为相应的主键。