我的问题是,是否有办法将PNG文件(以及任何其他文件)嵌入到可执行文件或源代码中,使其成为一个单独的文件,并且可执行文件可以使用它?
我有能力将PNG解析为字节流,因此不需要将其转换为像素数据。
提前感谢!(存在与此类似标题的其他问题,但它们及其答案似乎涉及更具体的问题,没有太大帮助)
编辑:编译器是Visual C++ 2010,运行在Windows上(尽管我想避免使用特定于Windows的工具来实现这一点)
edit2: Alf的答案似乎是最便携的方法,所以我迅速编写了一个函数,将PNG文件解析为可以读取为unsigned char
数组的TXT或头文件。在这种形式下,它与PNG文件本身相同,但我的png加载程序不接受该数组。当从内存加载时,PNG解析器采用(void * buffer, size_t length)
(如果有影响的话)。
如果您想查看代码,这是代码,但如果您认为还有其他更好的方法,我仍然会接受其他答案:
void compileImagePNGtoBinary(char * filename, char * output){
FILE * file = fopen(filename, "rb");
FILE * out = fopen(output, "w");
unsigned char buffer[32];
size_t count;
fprintf(out, "#pragma once \n\n static unsigned char TEXT_PNG_BYTES[] = { ");
while(!feof(file)){
count = fread(buffer, 1, 32, file);
for(int n = 0; n < count; ++n){
fprintf(out, "0x%02X, ", buffer[n]);
};
};
fprintf(out, "};");
fclose(file);
fclose(out);
};
最终编辑: ImageMagick,正如Alf所提到的,它完全满足了我的需求,谢谢!