• bmp


    将缓冲区里的24位、16位、32位的数据转换成RGB565格式的16位颜色值。

    24位BMP文件:(rrrrrrrr,gggggggg,bbbbbbbb)蓝色在低地址
    16位BMP文件:RGB555-xRRRRRGGGGGBBBBB,RGB565-RRRRRGGGGGGBBBBB,蓝色在低地址
    32位BMP文件:(xxxxxxxx,rrrrrrrr,gggggggg,bbbbbbbb)蓝色在低地址,最高那个字节一般不处理。

    你这段代码中的color应该是16位颜色,并且是RGB565格式,也就是红色5位,绿色6位,蓝色5位,RRRRRGGGGGGBBBBB。

    24位转16位时,蓝色右移3位,是因为需要将8位蓝色转成5位蓝色,绿色先右移2位,是因为从8位转成6位,然后再左移5位,就是移到 RGB565的16位数值的中间的位置上,00000GGGGGG00000,红色右移3位,就是8位转成5位,再左移11位,就是 RRRRR00000000000。

    16位转16位,直接将2字节拼接起来。

    32位转16位,和24转16位类似,也是需要将8位颜色截短为5位和6位,然后拼起来。pasting

    //----------------------------------------------------------
    // RGB565 转 8位灰度图
    //----------------------------------------------------------
    TUint8 gm_red,gm_green,gm_blue;
    TInt16 *des_ptr;
    TInt16 *pt;
    pt = (TInt16 *)p8; //RGB565流

    for(TInt j=0;j<h;j++)
    {
    for(TInt i = w;i>0;i--)
    {
    gm_red = ((*(TInt16 *)pt) & 0xF800) >> 8;
    gm_green = ((*(TInt16 *)pt) & 0x07E0) >> 3;
    gm_blue = ((*(TInt16 *)pt) & 0x001F) << 3;
    p[0] = ( TUint8 )((gm_red*77+gm_green*150+gm_blue*29+128)/256);
    p++;
    pt++;
    }
    }
    p = qt; //灰度图指针
     

  • 相关阅读:
    matlab练习程序(dubins曲线)
    matlab练习程序(扩展曲线边界)
    软件测试
    python3 二叉树添加以及删除节点
    python3 二叉树实现
    python3 顺时针打印矩阵元素
    python3 反转字符串的两种方式
    python3 字符串单词反转
    python3 链表
    python3 二分查找法实现
  • 原文地址:https://www.cnblogs.com/answer/p/1849927.html
Copyright © 2020-2023  润新知