exilon / QuickImageFX

Simplifying image manipulation using GDI, Graphics32, OpenCV or Vampyre Imaging libraries
Apache License 2.0
78 stars 27 forks source link

memory leak - TJPEGData i TJPEGImage #2

Closed PrzemWis closed 3 years ago

PrzemWis commented 3 years ago

procedure TForm1.Button1Click(Sender: TObject); var ImageFX : IImageFX; ms1,ms2: TMemoryStream; begin try ms1:= TMemoryStream.Create; ms2:= TMemoryStream.Create;

ms1.LoadFromFile('papagayo.jpg'); ms1.Position:=0;

ImageFX := TImageFXGR32.Create; ImageFX.LoadFromStream(ms1); ImageFX.Resize(400, 300, rmStretch, [rfNoMagnify], rsNearest); ImageFX.SaveToStream(ms2, ifJPG);

ms2.Position:=0; ms2.SaveToFile('out.jpg');

finally ms1.Free; ms2.Free; end;

end;

procedure TForm1.FormCreate(Sender: TObject); begin ReportMemoryLeaksOnShutdown:=true; end;

PrzemWis commented 3 years ago

//Proposed solution from the person kAzek of the forum 4programmers.net

procedure TImageFXGR32.SaveToStream(stream : TStream; imgFormat : TImageFormat = ifJPG); var graf : TGraphic; begin stream.Size:= 0; try case imgFormat of ifBMP: graf:= Self.AsBitmap; ifJPG: graf:= Self.AsJPG; ifPNG: graf:= Self.AsPNG; ifGIF: graf:= Self.AsGIF; end; graf.SaveToStream(stream); finally graf.Free; end; end;

exilon commented 3 years ago

Thanks for report it. Now is solved.