0

使用下面的代码示例,我成功创建了一个 .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);
}
4

0 回答 0