【问题标题】:Embed image in code, without using resource section or external images在代码中嵌入图像,不使用资源部分或外部图像
【发布时间】:2010-09-18 12:52:36
【问题描述】:

我正在寻找一种将图像嵌入库中的方法(仅限 Windows)。我不想采用“传统”方式将其放入资源中(因为特殊情况使得弄乱资源句柄不太方便。

理想情况下,应该有类似 xpm 文件的东西:一个图像的“文本”表示,它被放入 ac 数组中,并且一些代码转换为内存中的位图,然后可以以某种方式加载到 HIMAGE 或 HICON .我要嵌入的图像是 32 位位图 (bmp)。有任何想法吗?我正在使用 MFC,所以 MFC 库会很好,但当然我也可以使用不使用 MFC 的库。谢谢。

【问题讨论】:

标签: c++ visual-c++ mfc


【解决方案1】:

Google 的 bin2c 实用程序(类似于 http://stud3.tuwien.ac.at/~e0025274/bin2c/bin2c.c)。它采用文件的二进制表示形式并输出一个 C 源文件,其中包含初始化为该数据的字节数组。

只需将文件链接进去,您的图像就会放在一大块内存中。

在诸如“资源”甚至文件之类的东西可能不存在的嵌入式系统上使用这种工具非常普遍。

【讨论】:

  • 工作得很好,谢谢。为了完整起见:为了从内存中加载数据,我使用了来自 ragestorm.net/blogs/?p=9 的一些代码,这些代码围绕 LookupIconIdFromDirectoryEx() 和 CreateIconFromResourceEx()(用于 HICON)。
  • 我建议改用xxd -i myimage.png > myimage.h。请注意,xdd 是一个 Linux 实用程序。
【解决方案2】:

The Gimp 可以导出为 C 文件。我认为这是最简单的方法。

【讨论】:

    【解决方案3】:

    开源应用程序 Hexy 就是专门为此设计的。它在windows和linux上运行。 https://github.com/tristan2468/Hexy

    【讨论】:

    • 和bin2c有区别吗?某处有二进制文件吗?
    • 二进制文件位于该 GitHub 链接中,右侧有一个“下载”按钮。 Hexy 是基于 GUI 的,因此您只需将要转换的所有文件拖放到它上面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2013-12-05
    • 2013-01-11
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多