我要将由红绿蓝3种颜色组成的BMP图的每个像素的颜色读出来,并将结果转换成2进制急等!!请将程序发到[email protected]  谢谢了各位

解决方案 »

  1.   

    这个的数据量会很大的啊,每个象素点都有三个数据,一张BMP下来那数据太多了,
    建议不要采用这种方法。
      

  2.   

    to :Blakhawk(黑鹰) 
    那该怎么做呢,请您指点一下吧,我也正需要解决这个问题
      

  3.   

    bitmap->canvas->pixels[i][j]=rgb(red,green,blue);
      

  4.   

    GetBValue
    GetGValue
    GetRValue
      

  5.   

    得到的是 BYTE 转换成二进制自己来做把
      

  6.   

    谢谢楼上大哥,请问得到的BYTE是多长的啊还有需要转换成的2进制是16bit,red占5bit,green占6bit,blue占5bit
      

  7.   

    0-4 blue
    5-10 green
    11-15 red
      

  8.   

    作下上面的修改
    0-4bit blue
    5-10bit green
    11-15bit red
      

  9.   

    var
       C:TColor;
       R,G,B:Byte;
       x,y:integer;
       r1,g1,b1,str1,str2:string;begin
      memo1.Text:='';
     for x:=1 to image1.Height do
       begin
       str2:='';
       for y:=1 to image1.Width do
       begin
       C:=Image1.Canvas.Pixels[x,y];
       R:=GetRValue(C);
       G:=GetGValue(C);
       B:=GetBValue(C);
       r1:=inttohex(r,1);
       g1:=inttohex(g,1);
       b1:=inttohex(b,1);
       str1:=rightbstr(r1,2)+rightbstr(g1,2)+rightbstr(b1,2);
       str2:=str2+str1+'  ';
       end;
       memo1.Lines.Add(str2);
       end;
    end;是不是有数据丢失??
      

  10.   

    var
       C:Tcolor;
       R,G,B:Byte;
       x,y:integer;
       r1,g1,b1,str1,str2,str3:string;
    begin
      memo1.Text:=' ';
     for x:=1 to image1.Height do
       begin
       str1:='';
       str2:='';
       str3:=' ';
       for y:=1 to image1.Width do
       begin
       C:=Image1.Canvas.Pixels[x,y];
       R:=GetRValue(C); //byte
       G:=GetGValue(C);
       B:=GetBValue(C);   R1:=inttobin(R);
       G1:=inttobin(G);
       B1:=inttobin(B);
       str1:=R1+G1+B1;   str2:=rightstr(str1,16);   str3:=str3+str2+'  ';
       end;
       memo1.Lines.Add(str3);
       end;
    end;
    帮忙分析下 哪里有错误
      

  11.   

    var
      pictureDeal: TpictureDeal;
      rColor,gColor,bColor,grayColor:array[0..999999] of byte;
      rColorNum,gColorNum,bColorNum,grayColorNum:array[0..255] of integer;      
    pictureWidth:=showImage.cxImage1.Picture.Width;
            pictureHeight:=showImage.cxImage1.Picture.Height;
            showImage.Show ;
            k:=0;
            for j :=0 to pictureHeight-1 do
            begin
                    for i :=0 to pictureWidth-1 do
                    begin                          picturePointColor:=showImage.cxImage1.Picture.Bitmap.Canvas.Pixels[i,j];
                            rColor[k]:=(picturePointColor and $FF0000) shr 16;
                            gColor[k]:=(picturePointColor and $FF00) shr 8;
                            bcolor[k]:=picturePointColor and $FF;
                            grayColor[k]:=round(0.3*rColor[k]+0.59*gColor[k]+0.11*bColor[k]);
                            k:=k+1;
                    end;
            end;