수고가 많으시네요
전 delphi 초보자라서 모르는 것이 너무 많네요 좀 가르쳐주세요.
제가 하려고 하는 것은 아래의 프로그램으로 tiff 이미지파일을 raw 이미지파일로 변환하는 것인데요. 프로그램중에서 blockread 와 blockwrite가 잘 이해가 되지 않네요.
좀 자세히 가르쳐주세요. 꼭 좀 부탁드립니다...
var
Form1: TForm1;
dat : array[0..479,0..639] of byte;
implementation
{$R *.DFM}
procedure TForm1.convertClick(Sender: TObject);
var
buf,buf1,buf2 : array[0..639] of byte;
bufh : array[0..255] of byte;
i,j,nin : integer;
fi,fo,fo1,fo2 : file;
fni,fno,fno1,fno2 : string;
begin
fni:=(filelistbox1.FileName);
fno := changefileext(fni,'.raw');
fno1 := changefileext(fni,'.even');
fno2 := changefileext(fni,'.odd');
assignfile(fi,fni); reset(fi,1);
assignfile(fo,fno); rewrite(fo,1);
assignfile(fo1,fno1); rewrite(fo1,1);
assignfile(fo2,fno2); rewrite(fo2,1);
blockread(fi,bufh,256,nin);
for j := 0 to 479 do begin
blockread(fi,buf,640,nin);
for i := 0 to 639 do begin
dat[j,i] := buf[i];
end;
blockwrite(fo,buf,640,nin);
end;
closefile(fi);
for j := 0 to 479 do begin
for i := 0 to 639 do begin
if j mod 2 = 0 then
buf1[i] := dat[j,i] else
buf1[i] := round((dat[j-1,i]+dat[j+1,i]+dat[j-1,i-1]+dat[j-1,i+1]+dat[j+1,i-1]+dat[j+1,i+1])/6);
if j mod 2 = 1 then
buf2[i] := dat[j,i] else
buf2[i] := round((dat[j-1,i]+dat[j+1,i]+dat[j-1,i-1]+dat[j-1,i+1]+dat[j+1,i-1]+dat[j+1,i+1])/6);
end;
blockwrite(fo1,buf1,640,nin);
blockwrite(fo2,buf2,640,nin);
end;
closefile(fo);
closefile(fo1);
closefile(fo2);