`

获取位图RGB值的思路

阅读更多

    这是位图的文件结构,具体可查看BMP image format 。位图有文件头、图像的信息头、可选的调色表、数据区四部分组成。
    数据大小为:

              header=14 bytes

              info header=40 bytes

              option palette = 2的bbp次方 * 4

     其中,bpp是指每个像素占用的位数,bits per pixel。        

 

      查找RGB的思路是:根据数据区每个像素的值,直接索引调色表对应RGB即可

      其中,调色表的每一个元素的结构如下:

       unsigned char red;

       unsigned char green;

       unsigned char blue;

       unsigned char rev;    //预留字段

 

       步骤:

       1. 打开文件,读取头信息和文件信息中的planes(判断是否有调色表)、bpp值;

       2. malloc调色表使用空间,将调色表写入;

       3. 读取数据区,索引调色表,取出RGB值。

 

附件说明:

bitmap.rar:是bmp的定义实现,及使用demo。

       以上仅个人学习总结,供大家共同学习、改进!

  • 大小: 2.1 KB
分享到:
评论
1 楼 rogerer 2010-08-27  
        if ((int) chartolong(InfoHead.ciPlanes, 2) == 1) {
                int i, n=pow(2, ciBitCount);
                printf("number of color:%d, bpp is %d\n", n, ciBitCount);
                for (i =0; i < n;i++) {
                        PIXEL pix;
                        rc = fread((char *)&pix, 1, 4, fp);
                        printf("red=%d,green=%d,blue=%d\n", pix.red, pix.green, pix.blue);
                        sleep(2);
                }
        }

相关推荐

    位图的打开显示保存

    // 获取位图信息头和位图信息的指针 BITMAPINFO* m_pBitmapInfo = (BITMAPINFO*)m_pdib; BITMAPINFOHEADER* m_pBitmapInfoHeader = (BITMAPINFOHEADER*)m_pdib; m_nWidth = m_pBitmapInfoHeader-&gt;biWidth; m_...

    VC6.0下实现DLL获取屏幕位图到剪切板及十进制方式数组输出

    // 实现细节:从剪贴板获取位图,解析像素数据,转换为十进制数组 } ``` 完成上述步骤后,你需要在其他应用程序中加载并调用这个DLL。这可以通过`LoadLibrary`和`GetProcAddress`函数完成。在调用完DLL函数后,...

    CDib位图处理

    - **GetRGB**与**UpdataImage**:用于获取和更新像素的RGB值。 ```cpp BOOL CDib::GetRGB(BYTE *m_pR, BYTE *m_pG, BYTE *m_pB) { // 获取像素的RGB值 } BOOL CDib::UpdataImage(BYTE *m_pR, BYTE *m_pG, ...

    VC++ 实现位图透明效果示例

    为了实现透明,我们需要获取位图的alpha通道数据,并根据这些数据调整像素的颜色。这可以通过创建一个`BitmapData`结构来锁定位图的部分区域,并进行逐像素处理来实现: ```cpp Rect rect(0, 0, bitmap-&gt;GetWidth()...

    利用python_RGB色彩数据分析平台快速测定还原糖浓度.pdf

    使用扫描仪对这些样品进行扫描,以获得tiff格式的颜色位图。之后,利用团队自行开发的在线分析平台中的RGB分析模块读取这些样品溶液的RGB颜色数据。通过对样品取样量、图像分辨率等因素的研究,最终建立了一种基于...

    对话框中动态显示位图

    本文将详细介绍如何在对话框中动态显示位图,包括设计思路、具体实现步骤以及关键代码片段。 #### 静态显示位图的方法及局限性 静态显示位图是指通过预先定义的方式在对话框中固定展示某个位图。这种方式通常借助于...

    易语言源码屏幕取色.zip

    在计算机编程领域,屏幕取色是一项常见的功能,它允许用户从屏幕上选取任意颜色并获取其RGB值,以便在设计、开发或调试过程中使用。"易语言"是中国本土开发的一种面向对象的、可视化的编程语言,其设计理念是让编程...

    基于24位bmp位图的信息隐藏编程实例

    编程时,我们可以通过调整像素的RGB值,将秘密信息编码并隐藏在图像中。 信息隐藏的方法有很多种,如 LSB(Least Significant Bit,最低有效位)法,是常见的信息隐藏技术之一。它的工作原理是,对每个像素的RGB...

    灰度变换 VC 实现图像的灰度转换

    在实际代码中并没有给出具体的灰度值计算方法,但根据上述原理可以推断出这里应该包含了对每个像素点的RGB值进行计算并转换成灰度值的过程。 ### 四、总结 通过上述介绍,我们可以看到在Visual C++环境下实现图像...

    Bitmap 转 txt 源码

    在这个示例中,我们首先使用PIL库打开Bitmap文件,然后遍历每个像素,获取其RGB值,并将其转换为16进制字符串。这些字符串被写入TXT文件,每行代表原图像的一行像素。 通过理解位图图像的结构和颜色表示,以及编程...

    易语言-图片灰度化代码-四种方法(GDI处理,位图操作支持库处理)

    1. 分离RGB通道:先获取位图的像素数据,将每个像素的RGB分量分开。 2. 计算灰度值:对每个像素应用灰度转换公式。 3. 合并RGB通道:将计算出的新灰度值重新组合成RGB值,替换原来的像素数据。 4. 更新位图:使用...

    C++实现图片在控制台中输出

    在C++中,我们通常通过读取位图文件(如.bmp文件)来获取这些信息。位图文件通常包含一个头文件,描述了图像的宽度、高度、颜色深度等信息。 2. **文件读取**:使用C++的`fstream`库,我们可以打开并读取.bmp文件。...

    CDib.rar_CDib_CDib mfc_DIB mfc_MFC CDib

    这通常涉及到读取位图文件头信息,解析颜色表,以及获取位图数据。 2. **绘制DIB**: 派生的`CDib` 类将包含绘制DIB到窗口或其他设备上下文(DC)的方法。这可能包括`DrawToDC` 函数,该函数使用`BitBlt` 或`...

    vc显示jpg图片文件源代码

    接下来,这些像素值需要转换为Windows可以理解和显示的位图格式,通常使用RGB(红绿蓝)三原色模型。这可能涉及到颜色空间转换,比如从JPEG常用的YCbCr转换到RGB。 为了在窗口中显示图像,我们需要创建一个`CBitmap...

    C#高性能图片差异对比、差异提取源码

    在C#中,我们可以使用Bitmap的LockBits方法来获取图像的原始像素数据,然后通过遍历每个像素并比较RGB值来实现。这种方法比直接使用GetPixel方法快得多,因为它避免了频繁的内存访问,提升了性能。 对于"毫秒级别...

    VC6.0中不规则窗体和透明窗体的实现

    // 获取位图尺寸 BITMAP bm; GetObject(hBmp, sizeof(bm), &bm); // 创建一个32位深度的位图,并将其选入内存设备上下文环境中 BITMAPINFOHEADER RGB32BITSBITMAPINFO = {sizeof(BITMAPINFOHEADER), bm....

    易语言源码易语言屏幕差异传输优化源码.rar

    1. 图像处理:首先,需要理解图像的基本概念,如像素、位图、RGB颜色模型等。在屏幕差异传输中,需要对连续两帧图像进行像素级别的比较,找出变化的部分。 2. 差异计算:这是核心算法,通常采用像素差分法,比较两...

    Delphi 7 新概念百例

    48 多种渐变色的实现 │ ├─47 TColor与RGB值的互相转换 │ ├─46 将文本转换成图像 │ ├─45 提高对位图象素的访问速度 │ ├─44 将彩色位图转换为灰度图 │ ├─43 将图像从jpg,ico,bmp,wmf格式转换为emf格式 ...

    VC图像填充选区实例

    实现思路:CBrush brush(RGB(255, 128, 128))定义一个颜色画刷,使用颜色填充区域,加载位图,创建位图画刷,使用位图填充区域,释放画刷对象,定义一个区域对象,绘制矩形边框,创建一个矩形选区,组合选区,获取两...

Global site tag (gtag.js) - Google Analytics