请教高手:
有一个RGB的二值图片256*128pixel,希望按照如下规则转为二值位图:
如果RGB=0,则为0,否则为1我的问题是,输出的行应该是256bits,列应该是128bits,那么,我在vc中应该如何操作这些bit?
我的意思是,vc中没有这么长的bit,也没有操作bit的函数?
我应该如何处理?

解决方案 »

  1.   


    看不懂你的问题,,256*128,这个只是分辨率而已,也就是说,每行有256个像素,共有128行,一般可以用
    BYTE 类型的数组来存储这些数值。你这个二值图像,是8位的还是1位的?
      

  2.   


    我的图像是:横向256pixel,纵向128pixel。
    每个pixel为RGB三个字节。
    当RGB=(0,0,0),的时候,得到bit0,否则,bit1.我希望的输出结果是,每个字节的每个bit表示一个像素。
    也就是,每行256bit,每列128bit。
      

  3.   

    看明白了:(你的RGB=0是说RGB=(0,0,0)的意思吧?24位的二值位图,转成带调色板的二值位图。)
    行256位即是32字节(vc中应该如何操作这些bit?)
    不知道具体是什么操作,判断第几个位是1还是0的方法(完全是C语言问题):把所在的字节当作无符号整数,例如"10000100",判断第n位
    第1位:if((BYTE-BYTE%128)/128)...;
    第2位:if((BYTE%128-BYTE%64)/64)...;
    第3位:if((BYTE%64-BYTE%32)/32)...;
    第4位:if((BYTE%32-BYTE%16)/16)...;
    第5位:if((BYTE%16-BYTE%8)/8)...;
    第6位:if((BYTE%8-BYTE%4)/4)...;
    第7位:if((BYTE%4-BYTE%2)/2)...;
    第8位:if((BYTE%2-BYTE%1)/1)...;
      

  4.   

    BYTE pixels[256][128] = {0};然后根据你的规则一个一个byte的把数据填进去吧。
      

  5.   


    不好意思,不应该是byte[256][128],应该是byte[32][16],然后一个一个bit填数据。