3

我想用 Delphi 做一个应用程序。问题是我将在其中包含很多TImage组件 - 这将使 exe 大小非常大。到目前为止,我的 exe 有 20MB 大,而我只完成了主页,根据我的计算,仅 exe 就会超过 10GB - 这太多了。

如何制作一个包含数百/数千张图像的应用程序,但让 exe 体积小?

4

3 回答 3

11

不要将图像放在可执行文件中。将它们保存在外部文件中并在运行时加载它们。

这将要求您在设计时停止将图像加载到TImage控件中,而是使用动态代码来加载图像并传输到TImage控件。这样做有很多好处:

  1. 你将你的可执行文件保持在一个合理的大小,一个可以适应虚拟地址空间的大小。
  2. 您可以为图像使用最合适的压缩格式。如果我没记错的话,DelphiTImage会以一种非常低效的方式保存到 .dfm 文件中。您可以选择使用 PNG 或 JPEG 压缩。
  3. 将文件保留在外部可以让您在开发时更好地管理它们。您可以将它们作为单独的文件保存在您的版本控制系统中。将图像存储在 .dfm 文件中会在您需要更改图像时进行艰苦的更新。您必须与 IDE 进行大量交互。存储为文件允许您覆盖文件并提交到存储库。
于 2014-07-07T09:59:43.257 回答
2

如果您不需要将图像保持在原始大小,您可以在程序启动时读取它们并将它们缩放到它们的“工作”大小。这将极大地减少您的内存需求——例如,将图像减少到其原始宽度和高度的一半,将内存需求减少到原始图像的四分之一。

如果图像没有更改,您可以在单独的构建过程中离线执行此操作,并且也可以大大减少加载时间。否则,您可以在加载过程中缓存缩小的图像,以便在下次启动程序时加快速度。

于 2014-07-08T01:56:22.333 回答
1

您可能会发现二进制代码包含所有 PNG 文件格式的图像,因此它将为您编译非常大的应用程序大小。

我在运行时使用图像,如 JPG,所以在表单的OnCreate事件中,您可以从包中加载。

使用“项目”菜单“部署”将您的 JPG 文件包含到 APK 中。

你可以在这里阅读更多:http: //blogs.embarcadero.com/davidi/2013/11/23/43005/

于 2014-08-09T20:27:10.267 回答