![]() |
aus 2 bildern eins machen
hey,
ich wollte aus 2 Bildern 1 machen. Hierbei gibt es aber nen kleinen Überschnitt... so theoretisch funktioniert meine schleife auch ABer wenn ich sie länger laufen lasse fliege ich mit der meldung 'für diese berechung ist zu wenig speicher vorhanden' raus ... das kann eigl. nicht sein ich hab 3 Gb Ram ... könntet ihr euch mein code mal angucken und sagen wo das Speicherleck ist ? :) danke schonmal :
Delphi-Quellcode:
könnt ihr mir sagen wo der fehler ist ?
procedure TForm1.Zusammsetzen(Start: Integer);
var Bild: TBitmap ; ZBild1, ZBild2 : TBitmap ; Name_B1, Name_B2 : String ; procedure Schneiden(Name: string); var Bild : TBitmap; begin Bild := TBitmap.Create; try Bild.LoadFromFile(Name+'.Bmp'); Bild.Canvas.CopyRect(Rect(0, 0, 914, 687), Bild.Canvas, Rect(153, 4, 1067, 690)); Bild.Width := 914; Bild.Height := 687; Image1.Picture.Assign(Bild); Bild.SaveToFile(Name+'.bmp'); finally Bild.Free; end; end; procedure Schneiden2(Name: string); var Bild : TBitmap; begin Bild := TBitmap.Create; try Bild.LoadFromFile(Name+'.Bmp'); Bild.Canvas.CopyRect(Rect(0, 0, 914, 687), Bild.Canvas, Rect(153, 4, 1067, 687)); Bild.Width := 914; Bild.Height := 687; Image2.Picture.Assign(Bild); Bild.SaveToFile(Name+'.bmp'); finally Bild.Free; end; end; begin Schneiden(IntToStr(Start)); Schneiden2(IntToStr(Start +1)); Bild := TBitmap.Create; ZBild2 := TBitmap.Create; ZBild1 := TBitmap.Create; Bild.Width := 914; Bild.Height := 1369 ; Name_B1 := IntToStr(Start); Name_B2 := IntToSTr(Start +1 ); ZBild1.LoadFromFile(name_B1 + '.bmp'); ZBild2.LoadFromFile(name_B2 + '.bmp'); DeleteFile(Name_B1 + '.bmp'); DeleteFile(Name_B2 + '.bmp'); Bild.Canvas.CopyRect(Rect(0, 0, 914, 687), ZBild1.Canvas, Rect(0, 0, ZBild1.Width, ZBild1.Height)); Bild.Height := 614; Bild.Height := 1369; Bild.Canvas.CopyRect(Rect(0, 625, 914, 1369), ZBild2.Canvas, Rect(0, 0, ZBild2.Width, ZBild2.Height)); Image3.Picture.Assign(Bild); Image3.Picture.SaveToFile(name_B1 + '.bmp'); end; |
Re: aus 2 bildern eins machen
Hallo
Zitat:
Wenn ich es richtig sehe, gibst du "Bild", "ZBild1" und "ZBild2" nicht wieder frei. Vielleicht tummeln die sich bei mehrmaligem Aufruf alle noch im Speicher. Grüße, Mazte |
Re: aus 2 bildern eins machen
Delphi-Quellcode:
Wann/wo gibst du diese frei?
Bild := TBitmap.Create;
ZBild2 := TBitmap.Create; ZBild1 := TBitmap.Create; 32-Bit-Anwendung = maximal 2 GB (abzüglich Speicherfragmentierung und Anderem) |
Re: aus 2 bildern eins machen
oh ich hatte gedacht delphi wäre so schlau und würde das für mich machen ...
danke |
Re: aus 2 bildern eins machen
Nein, Delphi hat keine Garbage Kollektion, wenn du so was haben willst, musst du Java nehmen.
|
Re: aus 2 bildern eins machen
Oder Delphi .NET, C# etc.?!
|
Re: aus 2 bildern eins machen
oder Interfaces
|
Re: aus 2 bildern eins machen
Oder einfach sauberer programmieren :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz