使用ImageMagick:
convert file.png data.h
会得到类似下面的结果:
/*
data.h (PNM).
*/
static unsigned char
MagickImage[] =
{
0x50, 0x36, 0x0A, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20,
0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4D, 0x50, 0x0A, 0x32, 0x37,
0x37, 0x20, 0x31, 0x36, 0x32, 0x0A, 0x32, 0x35, 0x35, 0x0A, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
....
为了与其他代码兼容,您可以使用
fmemopen
来获取一个“常规”
FILE *
对象,或者使用
std::stringstream
创建一个
iostream
。但是,
std::stringstream
在此方面并不是很好,当然您也可以在任何可以使用迭代器的地方使用指针。
如果您要将其与automake一起使用,请不要忘记适当设置
BUILT_SOURCES。
这种方式的好处是:
- 您可以获得文本输出,因此可以在版本控制中进行修补。
- 它在每个平台上都是可移植且定义良好的。