请教,在用图片做背景的时候,需要读取文件头中的图片大小属性。比如BITMAP就有个BITMAPHEADER属性,在读取的时候需要先获取这个文件头,读取其中的文件高宽,才可以设置填充背景。我想问的是,不同格式的图片是不是需要文件头不同处理方式,比如GIF文件是不是也有个类似于BITMAPHEAER的结构,如果每种图片都要这么处理下,好像有点麻烦。有没有一种统一的方法进行处理的。谢谢

解决方案 »

  1.   

    直接用现成的库 CImage 
    其成员函数GetWidth、GetHeight 得到当前图像宽度、高度的像素值。
      

  2.   

    这是什么类,名字有没有搞错了。MSDN中怎么没有,我用的是VC6
      

  3.   

    我看原来用BITMAP格式的图片做背景图的时候,步骤是读取BITMAP文件头,读取其中属性
    // 读取位图属性
    nWidth  = bkImg.lpMapInfo->bmiHeader.biWidth;
    nHeight = bkImg.lpMapInfo->bmiHeader.biHeight;
    nCount  = bkImg.lpMapInfo->bmiHeader.biBitCount;

    // 位图的大小
    nDIBSize = (nWidth * nCount + 31) / 32 * 4;
    nDIBSize = nDIBSize * nHeight;

    bkImg.nDIBits = nDIBSize;
    bkImg.lpDIBits = new BYTE[nDIBSize];

    // 如果有颜色表,读之
    lpBuffer = lpBuffer + nSize;
    if (nCount < 9)
    {
    nSize = (1 << nCount) * 4;
    ReadFile(hFile, lpBuffer, nSize, &nCount, NULL);
    }

    //****** 读取文件DIB ******
    SetFilePointer(hFile, bfHeader.bfOffBits, 0, FILE_BEGIN);
    ReadFile(hFile, bkImg.lpDIBits, nDIBSize, &nCount, NULL);
    if (nDIBSize != nCount)
    {
      

  4.   

    有的图片格式是直接分析不出来图片大小的 因为gif好像就是分段的 用中止标志来决定图像的大小的
    楼主也可以尝试用GDI+的Image类加载图片 然后利用成员函数获得图片属性