如何将图像嵌入到 EXE 文件中并以幻灯片形式显示

发布于 2024-09-10 11:07:27 字数 121 浏览 10 评论 0原文

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

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

I have a requirement to build an Image manager which will allow users to build a collection of photos/images and then give them an option to convert these photos to a single EXE which when run, will show the photos/images on target PC as a slide show in full screen.

Is it possible to do this for multiple images?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

万劫不复 2024-09-17 11:07:27

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

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

搜索 EXE 文件的末尾(图像列表的开头)通常是通过使用 EXE 文件中未出现的常量标头、了解存根 EXE 的大小或在 EXE 末尾写入图像列表偏移量来完成的。 EXE 文件。或者,您可以以相反的方式存储信息并从文件末尾开始读取。

下面是存根示例代码的良好链接。

Should be possible. What you'll have to do is a EXE framework (stub) that reads its own binary and checks for an appended image list (can be something simple like [number of images][image sizes][image_1]...[image_n]) and displays those in a slide show.

You can then concatenate the EXE stub, the image information and the images for your final slide show EXE.

Searching for the end of the EXE file (beginning of the image list) is usually done by using a constant header that does not appear in the EXE file, knowing the size of the stub EXE or writing the image list offset at the end of the EXE file. Alternatively, you can store the information the other way round and start reading from the end of the file.

Here is something that looks like a good link for stub example code.

橘味果▽酱 2024-09-17 11:07:27

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

IrfanView can allready do that:
http://www.irfanview.com/
It can even unpack them from the exe-file again.

陈年往事 2024-09-17 11:07:27

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

You can build an application that enumerates its' own resources and loads them for display; this one the end users will run for the slide show. A separate app could add the user-selected resources to the first one. See the MSDN documentation for UpdateResource for info on adding the resources, and EnumResourceNames for information on enumerating them.

森末i 2024-09-17 11:07:27

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

使用以下方法:

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

并提供 paramstr(0) - 即您的 exe - 作为文件名,并提供 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 文件。

请参阅http://synopse.info/forum/viewtopic.php?pid=163

We provided some free and open source classes to read a .zip archive bundled (or not) to an exe. You can therefore append any .zip archive to your exe, then extract any picture inside this .zip with one class.

Use the following method:

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

and provide paramstr(0) - i.e. your exe - as aFileName and ZipStartOffset as a minimal original exe size: it will search for the beginning of the .zip file from this offset. Leave Size parameter as 0: it will get the size from the file size itself.

The same class can get any .zip archive embedded as a resource to your exe, if you prefer.

They are two ways of appending .zip content to an exe:

  1. use copy /b original.exe+pictures.zip newembedded.exe
  2. use the TZipWrite class provided, and its AddFromZip() method to create your exe from Delphi code: you can even compress and append your images on the fly, with no temporary pictures.zip file.

See http://synopse.info/forum/viewtopic.php?pid=163

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文