Q&A

  • blockread 와 blockwrite가 어떻게 쓰이는지 알려주세요
수고가 많으시네요

전 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);





0  COMMENTS