C 如何使用libbmp读取光栅?

C 如何使用libbmp读取光栅?,c,bitmap,C,Bitmap,昨天我下载了这个库: 他们说这个C库是为方便地读取、写入和修改Windows位图(BMP)图像文件而设计的。但是我找不到任何读取位图的函数。有人知道如何在C中读取位图(图像中的rgb像素)吗?我使用CodeBlocks IDE。我在代码中没有看到任何读取(加载)功能,因此描述有点可疑 我查看了,没有使用读取模式调用open(),函数bmp\u create()不支持加载现有文件 图书馆似乎不完整 您可能可以查看其他库(看起来很旧,但另一方面BMP格式也很旧)。以下函数读取BMP: char *D

昨天我下载了这个库: 他们说这个C库是为方便地读取、写入和修改Windows位图(BMP)图像文件而设计的。但是我找不到任何读取位图的函数。有人知道如何在C中读取位图(图像中的rgb像素)吗?我使用CodeBlocks IDE。

我在代码中没有看到任何读取(加载)功能,因此描述有点可疑

我查看了,没有使用读取模式调用
open()
,函数
bmp\u create()
不支持加载现有文件

图书馆似乎不完整


您可能可以查看其他库(看起来很旧,但另一方面BMP格式也很旧)。

以下函数读取BMP:

char *DIBreadBmp (char *szFilename)
{
    BITMAPFILEHEADER    *pBmf;
    DWORD               dwBitsSize;
    char                *pDIB;
    int                 fd;

    if ((_sopen_s (&fd, szFilename,(_O_RDONLY|_O_BINARY), _SH_DENYWR,(_S_IREAD|_S_IWRITE))) != 0) {
        LogError (ERR_FILENOTFOUND, szFilename);
        return (0);
    }
    // get length of DIB in bytes for use when reading
    dwBitsSize = _filelength (fd);

    // Go read the DIB file header and check if it's valid.
    pBmf = malloc (sizeof(BITMAPFILEHEADER));

    if ((_read (fd, (LPSTR) pBmf, sizeof (BITMAPFILEHEADER)) != sizeof (BITMAPFILEHEADER))
    ||  (pBmf->bfType != DIB_HEADER_MARKER))
    {
        free(pBmf);
        _close (fd);
        LogError (ERR_NOT_DIB, szFilename);
        return (0);
    }
    // Allocate memory for DIB
    if (!(pDIB= malloc(dwBitsSize - sizeof(BITMAPFILEHEADER))))
    {
        free(pBmf);
        _close (fd);
        LogError (ERR_MEMORY, szFilename);
        return (0);
    }
    // Go read the bits.
    if (!_read (fd, pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)))
    {
        free(pDIB);
        free(pBmf);
        _close (fd);
        LogError (ERR_READ, szFilename);
        return (0);
    }
    _close (fd);
    free(pBmf);

    return (pDIB);
}

我去了lib的页面,但没有找到任何文档。你知道文档在哪里吗?@PaulOgilvie不知道,我只是快速浏览了代码。它是一个C文件。EasyBMP是C++库,我使用CXYY代码。我正在尝试编写一些函数来将其添加到库中。c包含一些关于位图头的基本信息,所以我可以尝试查找位图数据。希望标头由以下内容组成:
uint8_t magicNo[2];uint32_t fsize;uint16_t创建者1;uint16_t创建者2;uint32_t偏移量偏移量是位图像素数据的起点。