使用下面的代码示例,我成功创建了一个 .bmp 文件,打开该文件时只显示一个灰色方块。现在我想在保存之前将文本添加到位图中。例如:绿色的“Hello World”应该显示在灰色方块的顶部。这里的stackoverflow帖子是我迄今为止发现的最接近的东西。不幸的是,我仍然无法弄清楚完整的实现。
请注意,我想避免使用任何第三方库。任何帮助将不胜感激,谢谢。
void SaveImage(const char* filename)
{
int Width = 470;
int Height = 470;
FILE *f;
unsigned char *img = NULL;
int triple_area = 3*Width*Height;
if(img) free(img);
img = (unsigned char *)malloc(triple_area);
memset(img,0,sizeof(img));
int res;
Assign_Bitmap_Req(triple_area); //Sets up BmpFileHeader, BmpInfoHeader, BmpPadding as unsigned char arrays
for(int i=0; i<Width; i++)
{
for(int j=0; j<Height; j++)
{
res = Height - 1 - j;
img[(i+res*Width)*3+2] = (unsigned char)(100);
img[(i+res*Width)*3+1] = (unsigned char)(100);
img[(i+res*Width)*3+0] = (unsigned char)(100);
}
}
f = fopen(filename,"wb");
fwrite(BmpFileHeader,1,14,f);
fwrite(BmpInfoHeader,1,40,f);
int remainder = (4-(Width*3)%4)%4;
for(int i=0; i<Height; i++)
{
fwrite(img+(Width*(Height-i-1)*3),3,Width,f);
fwrite(BmpPadding,1,remainder,f);
}
fclose(f);
}