안녕하세요.
비트맵 파일을 생성을 해서 해제를 하는데요.
result 값을 비트맵으로 해서 반환을 하니 해제 할때 에러가 발생하네요.
시점을 언제 free를 해야 하나요? 아니면, 안해도 되는 건가요?
아래의 예에서 발생합니다. bmp를 jpg로 변환시.
var
imgjpg : TJPEGImage;
imgbmp : TBitmap;
begin
try
imgjpg := TJPEGImage.Create;
imgbmp := TBitmap.Create;
// jpg 파일을 읽어와서
imgjpg.LoadFromFile( Path_Name );
// bmp 형식으로 어사인 시킨다.
imgbmp.Assign(TBitmap(imgjpg));
result := ImgBmp; ==> 여기가 비트맵형식으로 반환...
finally
// imgbmp.Free; ===> 반환하고 프리시키면 오류발생.
imgjpg.Free;
end; // end of try
PBitmap = ^TBitmap;
procedure loadjpgfile(Path_Name:PChar; NowBmp: PBitmap);
var
imgjpg : TJPEGImage;
begin
imgjpg := TJPEGImage.Create;
try
imgjpg.LoadFromFile(Path_Name);
NowBmp^.Assign(imgjpg);
finally
imgjpg.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
imgBmp : TBitmap;
jpgFileName : PChar;
begin
imgBmp := TBitmap.Create;
try
loadjpgfile(jpgFileName, @imgBmp);
Image1.Picture.Assign(imgBmp);
finally
imgBmp.Free;
end;
end;