我必须做些什么才能将DIB转换为BMP



如何将DIB转换为BMP?

位图标头类型的文档位于http://msdn.microsoft.com/en-us/library/dd183386%28VS.85%29.aspx.

在代码中,bmp文件和dib内存表示之间的区别在于开头存在BITMAPFILEHEADER结构(http://msdn.microsoft.com/en-us/library/dd183374(v=vs.85).aspx)。因此,将bmp转换为dib的字面答案是跳过BITMAPFILEHEADER,从dib头的内存地址开始(紧跟在位图文件头之后),该地址总是比bmp内存地址的开头高14字节。

BITMAPFILEHEADER *bmp = ...;
char * bmpBytes = reinterpret_cast<char *>(bmp);
void * myDib = (void *)bmpBytes + BMP_HEADER_LENGTH; /* (14 bytes) */
/* cast and do something with myDib */
...

HTH

检查API GdipCreateBitmapFromGdiDib

示例:http://www.codeproject.com/KB/GDI-plus/DIBtoBitmap.aspx

Imagemagik的convert函数将在命令行上为您执行此操作(以及许多其他转换)。免费、开源,可在所有主要平台上使用。这是一个伟大的软件,应该放在任何人的工具箱里。

最新更新