A
ashow07
Unregistered / Unconfirmed
GUEST, unregistred user!
判断图片中每个点,如果当前点的左边80个点的颜色都一样(不包含当前点),则把当前点色改为白色
,老是有问题,我用pixels可以实现,就是速度太慢了,下面用ScanLine的不行,
代码如下:
Bitmap.PixelFormat := pf24bit;
Bitmap.HandleType:=bmDIB;
For j :=0 to h-1 do begin
PixPtr:=Bitmap.ScanLine[j];
for i:= 0 to w-1 do begin
m:=i*3;
if i>80 then
begin
ift:=true;
color2:=RGBToColor(PixPtr[m-240+2],PixPtr[m-240+1],PixPtr[m-240]); //当前像素往左第80个像素值
for n:=1 to 80 do begin //循环判断当前点之前的80个点内容是不是一样
if RGBToColor(PixPtr[m-n*3+2],PixPtr[m-n*3+1],PixPtr[m-n*3])<>color2 then ift:=false;
end;
if ift then //如果都一样则把当前点的颜色改为白色
begin
PixPtr[M]:=255;
PixPtr[M+2]:=255;
PixPtr[M+1]:=255;
end;
end;
end;
end;
,老是有问题,我用pixels可以实现,就是速度太慢了,下面用ScanLine的不行,
代码如下:
Bitmap.PixelFormat := pf24bit;
Bitmap.HandleType:=bmDIB;
For j :=0 to h-1 do begin
PixPtr:=Bitmap.ScanLine[j];
for i:= 0 to w-1 do begin
m:=i*3;
if i>80 then
begin
ift:=true;
color2:=RGBToColor(PixPtr[m-240+2],PixPtr[m-240+1],PixPtr[m-240]); //当前像素往左第80个像素值
for n:=1 to 80 do begin //循环判断当前点之前的80个点内容是不是一样
if RGBToColor(PixPtr[m-n*3+2],PixPtr[m-n*3+1],PixPtr[m-n*3])<>color2 then ift:=false;
end;
if ift then //如果都一样则把当前点的颜色改为白色
begin
PixPtr[M]:=255;
PixPtr[M+2]:=255;
PixPtr[M+1]:=255;
end;
end;
end;
end;