C++ 将FreeType位图保存到文件

C++ 将FreeType位图保存到文件,c++,freetype,freeimage,C++,Freetype,Freeimage,我一直在使用FreeType在OpenGL/DirectX中渲染文本。出于调试目的,我希望将glyph渲染到一个文件(bmp、png等),以便将它们打包为字体精灵表。为此,我使用了FreeImage。我正在通过FreeImage_ConvertFromRawBits函数创建FreeImage位图。由于FreeType生成8位glyph,因此我将为FreeImage_ConvertFromRawBits的掩码参数传递0。请参阅下面的代码 /* Initialize FreeType */ /* C

我一直在使用FreeType在OpenGL/DirectX中渲染文本。出于调试目的,我希望将glyph渲染到一个文件(bmp、png等),以便将它们打包为字体精灵表。为此,我使用了FreeImage。我正在通过FreeImage_ConvertFromRawBits函数创建FreeImage位图。由于FreeType生成8位glyph,因此我将为FreeImage_ConvertFromRawBits的掩码参数传递0。请参阅下面的代码

/* Initialize FreeType */
/* Create Face object */
/* Set character size */

int charCode = (int)'a';
int charIndex = FT_Get_Char_Index(ftFace, CHAR_CODE);
FT_Load_Char(face, charIndex, FT_LOAD_DEFAULT);
FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL)

/* Check for errors */

int bpp = 8;
int width = face->glyph->bitmap.width;
int height = face->glyph->bitmap.rows;
int pitch = face->glyph->bitmap.pitch;
unsigned char* buffer = face->glyph->bitmap.buffer;
FIBITMAP* dib = FreeImage_ConvertFromRawBits(buffer, width, height, pitch, bpp, 0, 0, 0);

/* Check for errors */

FreeImage_Save(FIF_BMP, dib, "Glyph.bmp");

问题是这张照片看起来很奇怪。你可以看出它看起来像一个雕文,但它是一团糟。如果我尝试将图像保存为png,图像仍然乱七八糟,但到处都是随机颜色。我似乎在任何地方都找不到将FreeType位图保存到图像文件的示例。谢谢

请注意:FreeType输出8bpp灰度。如果您不正确地将其插入24bpp RGB或其他可能导致您描述的问题的内容,我将指定8bpp作为第五个参数,以从原始位释放图像以指示8bpp灰度。