鱼C论坛

 找回密码
 立即注册
查看: 3593|回复: 1

windows编程问题,图像输出,求大神来帮忙啊

[复制链接]
发表于 2013-3-26 19:12:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
window api 实现,将已经获得的图像hbitmap输出成为一个位图文件,我使用了以下函数去实现

int SaveBitmapToFile(HBITMAP hbitmap,LPSTR lpFileName)
{
        BITMAP bitmap;
        GetObject(hbitmap,sizeof(HBITMAP),&bitmap);

        FILE *fp = fopen(lpFileName, "w+b");

        BITMAPINFOHEADER bitinfoh = {0};//设置位图信息头
        bitinfoh.biBitCount = bitmap.bmBitsPixel;//每个像素字节大小
        bitinfoh.biCompression = BI_RGB;   //当biCompression成员的值是BI_RGB时,它没有调色板
        bitinfoh.biHeight = bitmap.bmHeight;//高度
        bitinfoh.biPlanes = 1;
        bitinfoh.biSize = sizeof(BITMAPINFOHEADER);
        bitinfoh.biSizeImage = bitmap.bmWidthBytes * bitmap.bmHeight;//图像数据大小
        bitinfoh.biWidth = bitmap.bmWidth;//宽度

        BITMAPFILEHEADER bitfileh = {0}; //设置位图文件头
        bitfileh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);//到位图数据的偏移量
        bitfileh.bfSize = bitfileh.bfOffBits + bitmap.bmWidthBytes * bitmap.bmHeight;//文件总的大小
        bitfileh.bfType = (WORD)0x4d42;
       
        byte *p = new byte[bitmap.bmWidthBytes * bitmap.bmHeight];//设置图像像素信息,图像信息
        //至此,位图四部分完成,即位图文件头,位图信息头,调色板(本码中无调色板),图像信息
        //下面将信息写入文件
       
        fwrite(&bitfileh, 1, sizeof(BITMAPFILEHEADER), fp);//写入位图文件头
        fwrite(&bitinfoh, 1, sizeof(BITMAPINFOHEADER), fp);//写入位图信息头
        fwrite(p, 1, bitmap.bmWidthBytes * bitmap.bmHeight, fp);//写入位图数据

        delete [] p;
        fclose(fp);

        return TRUE;
}

但是问题是,编译通过,运行时,程序占用非常多内存,而且无法结束,强行关闭程序,结果输出了将近大小1G的位图文件,初接触,请问上面的函数问题在哪里啊
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-26 19:40:08 | 显示全部楼层
又没人有人啊,我可是在线等
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-5 03:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表