如何将图像嵌入到EXE文件中并将其显示为幻灯片

时间:2010-07-16 06:59:01

标签: delphi vb6 executable slideshow realbasic

我需要构建一个图像管理器,允许用户构建一组照片/图像,然后给他们一个选项,将这些照片转换为单个EXE,在运行时,将在目标上显示照片/图像PC作为全屏幻灯片放映。

是否可以为多个图像执行此操作?

4 个答案:

答案 0 :(得分:5)

应该可以。您需要做的是一个EXE框架(存根),它读取自己的二进制文件并检查附加的图像列表(可以像[图像数量] [图像大小] [image_1] ... [image_n]一样简单并在幻灯片放映中显示这些内容。

然后,您可以连接EXE存根,图像信息和最终幻灯片EXE的图像。

搜索EXE文件的结尾(图像列表的开头)通常是通过使用EXE文件中没有出现的常量标题来完成的,知道存根EXE的大小或写入图像列表偏移量。 EXE文件的结尾。或者,您可以反过来存储信息并从文件末尾开始阅读。

这似乎是stub example code的良好链接。

答案 1 :(得分:2)

IrfanView可以做到这一点:
http://www.irfanview.com/
它甚至可以再次从exe文件中解压缩它们。

答案 2 :(得分:0)

您可以构建一个枚举其自有资源并加载它们以供显示的应用程序;这一个最终用户将为幻灯片放映。单独的应用程序可以将用户选择的资源添加到第一个。有关添加资源的信息,请参阅UpdateResource的MSDN文档;有关枚举资源的信息,请参阅EnumResourceNames

答案 3 :(得分:0)

我们提供了一些免费和开源类来读取捆绑(或不捆绑)到exe的.zip存档。因此,您可以将任何.zip存档附加到您的exe,然后使用一个类提取此.zip中的任何图片。

使用以下方法:

constructor TZipRead.Create(const aFileName: TFileName; ZipStartOffset, Size: cardinal);

并提供paramstr(0) - 即你的exe - 作为aFileName和ZipStartOffset作为最小的原始exe大小:它将从该偏移量中搜索.zip文件的开头。将Size参数保留为0:它将从文件大小本身获得大小。

如果您愿意,同一个类可以将任何.zip存档作为资源嵌入到您的exe中。

它们是将.zip内容附加到exe:

的两种方法
  1. 使用copy / b original.exe + pictures.zip newembedded.exe
  2. 使用提供的TZipWrite类及其AddFromZip()方法从Delphi代码创建你的exe:你甚至可以动态压缩和附加你的图像,没有临时的pictures.zip文件。
  3. 请参阅http://synopse.info/forum/viewtopic.php?pid=163