例如:
     图像大小:352*288(16位)
     BYTE* lp 这个指向它的纯数据指针。大小(202752字节)
     如何利用lp取出它的所有像素存入到 BYTE* Bpixels

解决方案 »

  1.   

    已经知道大小和位数还不好办自己写个二重循环转换数据不就的了
    //16位转24位,假设为555格式
    WORD c;
    BYTE r,g,b;
    c=数据;
    r=(c&0x7C00U)>>10;
    g=(c&0x03E0U)>>5;
    b= c&0x001FU
      

  2.   

    不愧是3星,说得很清楚
    16位的位图有几种形式,比如555,565等,
    一般前者常用些
    因为每个像素占用的空间是3字节
    zyl910(910:分儿,我又来了!) 可能是假设你是要把图像转化成24位(4字节一个像素),其实这样对于一般操作会更方便点没错
    然后你就找上面的办法做就好了(不知道zyl910(910:分儿,我又来了!) 是不是这个意思我瞎解释,呵呵)
    因为你没说清楚到底要做什么?
    如果只是同类指针的简单的转移,....这个问题问的也没什么意义了吧
    ——————————————————————————————————
    共同学习,共同进步
      

  3.   

    谢谢大家,我的理解对不对?
    16位图是每2字节表示一像素,即8*2:16
    表示rgb值是每5位为一分段,5,5,5 (这就是16为图像表示方法)
    24位图是每3字节表示一像素,即顺序的3个字节表示为bgr
    所以说16位图字节大小肯定是这张位图像素值的2倍,即:宽*高*2
    24位图字节大小肯定是这张位图像素值的3倍,即:宽*高*3不过16位转化为24位该如何做啊?给我点提示,谢谢。——————————————————————————————————
    共同学习,共同进步
      

  4.   

    晕,上面一楼的不就是教你如何做这件事吗?
    //16位转24位,假设为555格式
    WORD c;
    BYTE r,g,b;
    c=数据;
    r=(c&0x7C00U)>>10;
    g=(c&0x03E0U)>>5;
    b= c&0x001FU
    就是这样啊