如何将DIB转换为BMP?
答案 0 :(得分:3)
位图标题类型的文档位于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
答案 1 :(得分:2)
检查API GdipCreateBitmapFromGdiDib
实施例: http://www.codeproject.com/KB/GDI-plus/DIBtoBitmap.aspx
答案 2 :(得分:1)
Imagemagick's convert函数将在命令行中为您执行此操作(以及许多其他转换)。免费,开源,适用于所有主要平台。这是一个很棒的软件,应该放在任何人的工具箱中。