zoukankan      html  css  js  c++  java
  • 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; //灰度图指针
     

  • 相关阅读:
    Unlocker(强力删除文件工具) 1.9.2 汉化绿色版
    js 用blob来显示存储资源,并清除其他资源
    js 创建音频声音
    兼容 线性渐变
    @font-face 兼容写法
    中国行政区域划分 爬虫工具
    前端中的spring实现
    css命名规范
    sass 备忘命令
    charles 破解命令
  • 原文地址:https://www.cnblogs.com/answer/p/1849927.html
Copyright © 2011-2022 走看看