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;是不是有数据丢失??
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; 帮忙分析下 哪里有错误
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;
建议不要采用这种方法。
那该怎么做呢,请您指点一下吧,我也正需要解决这个问题
GetGValue
GetRValue
5-10 green
11-15 red
0-4bit blue
5-10bit green
11-15bit red
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;是不是有数据丢失??
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;
帮忙分析下 哪里有错误
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;