小弟在学习图片编程,这个问题折腾了几天.
请大虾帮看下.我的代码问题在哪?
如何改,谢了.问题:一个图片中有很多行文字,判断图片空行的地方,以此X直线方向的第一个空白行为分割点,将图片按行数分割成若干图片.procedure TMainForm.SpeedButton4Click(Sender: TObject);
var
i,j,x,W,H:Integer;
c: TColor;
IsWhite:Boolean;
begin
W := Image1.Picture.Width;
H := Image1.Picture.Height; ShowMessage('Width:'+IntToStr(W)+#10#13+'Height:'+IntToStr(H));
//with do
x := 0;
begin
for i := 0 to W - 1 do
begin
IsWhite:=true; //先假设全是白色
for j := 0 to H - 1 do
begin
c := Image1.Picture.Bitmap.Canvas.Pixels[i,j];
//Memo1.Lines.Add(ColorToString(c));
if c<>clWhite then //如果一行里有发行不是白色,则标识有非白色.
IsWhite:=false;
Application.ProcessMessages;
end;
if IsWhite=true then //如果全部是白色,则标记坐标高度值
begin
Inc(x);
LineArry[x]:=H;
end;
end;
end;
ShowMessage(IntToStr(LineArry[2]));
//Image1.Refresh;
end;
请大虾帮看下.我的代码问题在哪?
如何改,谢了.问题:一个图片中有很多行文字,判断图片空行的地方,以此X直线方向的第一个空白行为分割点,将图片按行数分割成若干图片.procedure TMainForm.SpeedButton4Click(Sender: TObject);
var
i,j,x,W,H:Integer;
c: TColor;
IsWhite:Boolean;
begin
W := Image1.Picture.Width;
H := Image1.Picture.Height; ShowMessage('Width:'+IntToStr(W)+#10#13+'Height:'+IntToStr(H));
//with do
x := 0;
begin
for i := 0 to W - 1 do
begin
IsWhite:=true; //先假设全是白色
for j := 0 to H - 1 do
begin
c := Image1.Picture.Bitmap.Canvas.Pixels[i,j];
//Memo1.Lines.Add(ColorToString(c));
if c<>clWhite then //如果一行里有发行不是白色,则标识有非白色.
IsWhite:=false;
Application.ProcessMessages;
end;
if IsWhite=true then //如果全部是白色,则标记坐标高度值
begin
Inc(x);
LineArry[x]:=H;
end;
end;
end;
ShowMessage(IntToStr(LineArry[2]));
//Image1.Refresh;
end;
就是一个记录坐标值的int数组而已