zoukankan      html  css  js  c++  java
  • 把資源加载到内存中 BMP 出错

    BMP文件放到VS的資源中時,VS會將BMP的文件頭去掉,即BITMAPFILEHEADER,這個結構體去除。所以當加載BMP到內存中時,如果是使用GDI+或是其它解釋庫時,會解析失敗。

    所以在讀取BMP資源時,需要加上BITMAPFILEHEADER結構體。

    // pvResData  為已經讀入到內存的BMP數據。
    //获得位图信息头  
            BITMAPINFOHEADER bmpInfoHdr;  
            CopyMemory(&bmpInfoHdr, pvResData, sizeof(BITMAPINFOHEADER));  
            //获得位图颜色表中RGBQUAD结构的个数  
            long nColorEntries;  
            switch(bmpInfoHdr.biBitCount)  
            {  
            case 1:  
                nColorEntries = 2;  
                break;  
            case 4:  
                nColorEntries = 16;  
                break;  
            case 8:  
                nColorEntries = 256;  
                break;  
            default:  
                nColorEntries = 0;  
            }  
            //根据位图信息头创建位图文件头  
            BITMAPFILEHEADER bmpFileHdr;  
            bmpFileHdr.bfType = 0x4d42;  // 'BM'  
            bmpFileHdr.bfSize = sizeof(BITMAPINFOHEADER) + dwResSize;  
            bmpFileHdr.bfReserved1 = bmpFileHdr.bfReserved2 = 0;  
            bmpFileHdr.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * nColorEntries;  
            //写入位图文件头 
    //...
    // 再寫入 pvResData
    

      參考:

    http://blog.csdn.net/lyserver/article/details/2874366

  • 相关阅读:
    几道简单容易被问的题
    java IO流学习总结
    Spark学习(二) -- Spark整体框架
    Spark学习(一) -- Spark安装及简介
    Python -- 数据加载、存储与文件格式
    Python库安装
    Python -- 基础
    reactive-turtle
    DP4J -- mnist
    初识DeepLearning4j
  • 原文地址:https://www.cnblogs.com/lin1270/p/3685153.html
Copyright © 2011-2022 走看看