AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TImage bearbeiten: Speicher reicht angeblich nicht aus
Thema durchsuchen
Ansicht
Themen-Optionen

TImage bearbeiten: Speicher reicht angeblich nicht aus

Offene Frage von "blackdrake"
Ein Thema von blackdrake · begonnen am 10. Mai 2008 · letzter Beitrag vom 11. Mai 2008
Antwort Antwort
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#1

TImage bearbeiten: Speicher reicht angeblich nicht aus

  Alt 10. Mai 2008, 19:29
Hallo.

Ich hab mal wieder ein ganz komisches Speicherproblem.

Ich möchte ein JPEG bearbeiten. Da dies aber nicht möglich ist, arbeite ich mit TImage und Canvas und anschließend wandle ich in JPEG um:

Delphi-Quellcode:
// JPEG "ADest" wird erstellt. Ist genau so groß wie "ASource". Anschließend werden 2 PNGs auf das leere Ziel-JPEG gelegt.

procedure TMainForm.body_spec(ASource, ADest: string);
var
  img: TImage;
  img2: TPNGObject;
  tempjpeg: TJPEGImage;
  nw, nh: integer;
begin
  tempjpeg := TJPEGImage.Create;
  try
    tempjpeg.LoadFromFile(ASource);

    nw := tempjpeg.Width;
    nh := tempjpeg.Height;
  finally
    tempjpeg.Free;
  end;

  up;

  img := TImage.Create(self);
  try
    img.Width := nw; // Umweg über nw und nh um Speicher nicht zu sehr durch gleichzeitiges Öffnen von "tempjpeg" und "img" zu belasten
    img.Height := nh;

    img2 := TPNGObject.Create();
    try
      img2.LoadFromFile(GetTempDir+'files\body_spec.png');
      img.Canvas.Draw(1405, 314, img2); // <-- Es sei nicht genügend Speicher vorhanden (blödsinn!)
      img.Canvas.Draw(2136, 314, img2);
    finally
      img2.Free;
    end;

    img.Picture.SaveToFile(GetTempDir+ctmpname);
  finally
    img.free;
  end;

  BmpToJpg(GetTempDir+ctmpname, ADest);
  DeleteFile(GetTempDir+ctmpname);
end;
Der Code hat aber tatsächlich mal funktioniert (und das auf einem PC mit halb so viel Speicher).

Meldung ist: "Für diesen Befehl ist nicht genügend Speicher verfügbar"

Ich habe hier aber 256 MB ph. RAM von 1 GB frei, also sehe ich kein Problem. Habe auch schon den FastMM Speichermanager am Laufen. Die Ziel-JPEG ist 4090x2678 groß. Was kann ich hier machen? PhotoShop kann doch mit so Dimensionen auch umgehen

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: TImage bearbeiten: Speicher reicht angeblich nicht aus

  Alt 11. Mai 2008, 10:34
Hallo.

Heute geht das Programm wieder. Scheinbar hat ein Neustart die Ressourcen etwas regeneriert. Das Problem sehe ich aber trotzdem noch (vor allem, weil mein Programm bei möglichst allen Endnutzern laufen soll): Wieso nutzt mein Programm/Delphi nicht die Möglichkeit der Auslagerungsdatei? Ich habe im Task-Manager gesehen, dass mein Programm eine Speicherauslastung von 85 MB hat, wenn es mit den großen Bitmaps arbeitet. Eigentlich war gestern soviel Speicher auf jeden Fall noch frei. Aber selbst wenn kein Speicher zur Verfügung stehen würde, wieso wird die Auslagerungsdatei nicht beansprucht?

Gruß
blackdrake

// Edit: Der Fehler kommt schon wieder, obwohl kaum Programme laufen und ich viel Speicher übrig habe. Ich habe gemerkt, dass kurz vor der Exception die Auslagerungsdatei von 774 MB auf 860 MB hoch geht... Trotzdem könnte die Auslagerungsdatei noch sehr viel aushalten.
Daniel Marschall
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz