Mam problem z programem do konwersji obrazków BMP do mojego własnago formatu i z programem do odczytu tych obrazków, który działa pod DOSem.
W skrócie kod wygląda tak:
Ten kod Turbo Pascala (image-shower):
procedure ShowPic(x, y : Integer; Filename : String);
var f : Text; l : String; i,j,k,c :Integer;
begin
Assign(f, FileName);
Reset(f);
j := x-1;
k := y;
While not eof(f) do begin
Readln(f, l);
if l[i]='n' then j := j+1;
k := y;
i := 0;
repeat
i := i+1;
k := k+1;
c := 9;
Case l[i] of
{ Wielka litera oznacza pojasnienie! }
'0' : c := white;
'1' : c := black;
'r' : c := red;
'g' : c := green;
'b' : c := blue;
'y' : c := yellow;
'R' : c := lightred;
'G' : c := lightgreen;
'B' : c := lightblue;
'2' : c := lightgray;
'3' : c := darkgray;
end;
if c <> 9 then PutPixel(k,j,c);
until (l[i] = 'n') or (l[i] = '') ;
end;
end;
Ten kod Delphi (konwertor):
procedure TForm1.SpeedButton2Click(Sender: TObject);
var i,j,k : Integer; l : String; z : Char; pc : TColor;
begin
Memo1.Lines.Clear;
For i := 1 to Image1.Picture.Height do begin
j := 0;
For k := 1 to Image1.Picture.Width do begin
j := j+1;
z := ' ';
pc := Image1.Canvas.Pixels[j,i];
Case pc of
clWhite : z := '0';
clBlack : z := '1';
clMaroon: z := 'r';
clGreen : z := 'g';
clNavy : z := 'b';
clYellow: z := 'y';
clRed : z := 'R';
clLime : z := 'G';
clBlue : z := 'B';
clSilver: z := '2';
clGray : z := '3';
end;
if pc = ColorBox1.Selected then z := ' ';
l := l + z;
if k = Image1.Picture.Width then break;
end;
WriteLineToMemo(l);
l := '';
end;
end;
procedure TForm1.WriteLineToMemo(s : String);
var d, i, j : Integer; t : String;
begin
d := length(s);
if d <= 254 then begin Memo1.Lines.Add(s); Memo1.Lines.Add('n'); exit; end;
for i := 1 to d do begin
j := j+1;
t := t+s[i];
if j > 254 then begin Memo1.Lines.Add(t+'n'); j := 0; t := ''; end;
end;
end;
Link dla bardziej zainteresowanych - http://adiblol.w.interia.pl/problemimage.zip - znajdziesz tu kod programu z TPascala i Delphi.
<font size="4">// Z góry dzięki za pomoc</span> :) !