将位图从内存形式转换为文件形式

时间:2017-01-19 19:58:45

标签: c++ bitmap portable-executable

我想要完成的是将加载内存的位图转换为文件(.bmp)。

我应该提一下bpp:24并输入:RGB。

我将我的结果与一个名为Res hacker的软件进行比较,该软件可以从加载的模块中提取资源作为位图

Res黑客结果:            enter image description here

地雷:        Res hacker result

标题似乎没有问题(BITMAPINFOHEADER + BITMAPFILEHEADER),它们在两个文件中都相似。

问题在于像素位,我无法想象如何将它们从内存转换为文件。

int PeBmLoader::Get_Bit_Map_File(char *& file,BITMAPFILEHEADER 
*bitmap_file_header,BITMAPINFOHEADER * bitmap_info_header){

int data_size = bitmap_info_header->biSizeImage;
int total_size = data_size + sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);

unsigned char temp;
file = new char[total_size];
char * data = new char[data_size];

memcpy(file,(char*)bitmap_file_header,sizeof(BITMAPFILEHEADER));
memcpy(file+sizeof(BITMAPFILEHEADER),   (char*)bitmap_info_header,sizeof(BITMAPINFOHEADER));
memcpy(data,
       (char*)(bitmap_info_header+sizeof(BITMAPINFOHEADER)),
       data_size);

std::cout << bitmap_info_header->biCompression << std::endl;

   memcpy(file+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER),data,data_size);


delete data;

return total_size;}

这是代码,你可以看到除了以原始形式复制像素位(数据)之外我什么也做不了。

0 个答案:

没有答案