AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi BMP (nicht genügend speicher) JPG 4 MP
Thema durchsuchen
Ansicht
Themen-Optionen

BMP (nicht genügend speicher) JPG 4 MP

Ein Thema von Karstadt · begonnen am 17. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 11:50
Delphi-Quellcode:
    Bild := TBitmap.Create;
    f_hauptfenster.JPG_nach_BMP(BildPfad,Bild);
    //mach was
    Bild.FreeImage;
    Bild.Free;


procedure Tf_hauptfenster.JPG_nach_BMP(Pfad_Jpg:String; Var Bmp:TBitmap );
var JPG:TJpegImage;
begin
   JPG := TJPEGImage.Create;
   JPG.LoadFromFile(Pfad_Jpg);
   bmp.width:= JPG.Width;
   bmp.Height:= JPG.Height;
   bmp.canvas.StretchDraw(Rect(0,0,bmp.width,bmp.height),JPG);
   JPG.assign(bmp);
   JPG.free;
end;
wenn ich große bilder in BMP umwandele bekomme ich immer Fehler. nicht genügend speicherplatz warum?
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 11:53
also helfen kann cih dir da nicht, aber was soll

Delphi-Quellcode:
JPG.assign(bmp);
JPG.free;
für einen sinn haben?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#3

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:14
...//JPG.assign(bmp); funktioniert trotzdem nicht...
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:28
HI,
das kommt ein wenig darauf an was du wo laufen lässt. Erste Frage ist, was für ein Windows verwendest du? Wie groß ist das Bild (in Pixeln) und wieviel RAM hast du (wieviel freie Festplatte auf dem Laufwerk mit dem virtuellen Speicher).
Dann ist die nächste Sache, wo wird Bitmap angelegt? Ist es eine lokale Variable? Dann versuch es mal mit einer Klassenvariable.
Das var in JPG_nach_BITMAP kannst du dabei gleich streichen. Du legst keine neue Bitmap an. Da es sich bei einer Variable vom Typ TBitmap um eine Referenz handelt, werden alle Änderungen an der Bitmap automatisch übernommen.

Ansonsten solltest du auch dein Design der Klassen überarbeiten. Einerseits zeichnest du recht umständlich. Du kannst auch einfach:
Delphi-Quellcode:
procedure Jpg2Bitmap(const Jpeg : TJpegImage; const Bitmap : TBitmap);
begin
  if assigned(Jpeg) and assigned(Bitmap) then
  begin
    Jpeg.BitmapNeeded;
    Bitmap.Assign(Jpeg);
  end;
end;
Allerdings weiß ich nicht, ob du spezielle Eigenschaften der Bitmap hier erhalten möchtest, du könntest jedenfalls ziemlich schlechte Ergebnisse bei unterschiedlich Farbpaletten bekommen.

Ja, was ich eigentlich sagen wollte ist, dass du hier Logik und Darstellung vermischt. Kein Fenster braucht die Methode ein JPEG in eine Bitmap umzuwandeln direkt zu kennen. Besser wäre hier eine eigene Klasse zu Umwandlung (aber ist nur sauberes OO Design, keine Kritik!).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#5

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:33
für diesen Befehl ist nicht genügend arbeitspeicher..

    overlay.canvas.StretchDraw(Rect(0,0,overlay.Width,overlay.Height),overlay_temp);
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:37
Ok, grün blau blau, heute ja, draussen auch.

So, hab jetzt gezeigt dass ich auch sinnfreie Sätze hinbekomme, was willst du denn mit
Zitat von Karstadt:
für diesen Befehl ist nicht genügend arbeitspeicher..

    overlay.canvas.StretchDraw(Rect(0,0,overlay.Width,overlay.Height),overlay_temp);
sagen?!
Gut, du bekommst irgendwo einen Fehler, und? Wo kommt das denn her?!
Wäre auch nett, wenn du erstmal die anderen (anstehenden) Fragen beantworten könntest.
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#7

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:44
Sorry

Erste Frage ist, was für ein Windows verwendest du?

windows 2000 SP4 (wurde aber auch am XP PRO SP2 ausprobiert)

Wie groß ist das Bild

Bild
5000 x 3757 Pixel

Wieviel RAM hast du


Ram 512 MB

(wieviel freie Festplatte auf dem Laufwerk mit dem virtuellen Speicher).
HDD Frei 5 GB / virtuelle Speicher 768-1536

Dann ist die nächste Sache, wo wird Bitmap angelegt?
Ist es eine lokale Variable?

JA
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:50
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var JPG:TJpegImage;
      bmp: TBitmap;
begin
   JPG := TJPEGImage.Create;
   JPG.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Bild.jpg');
   bmp := TBitmap.Create;
   bmp.width:= JPG.Width;
   bmp.Height:= JPG.Height;
   bmp.canvas.StretchDraw(Rect(0,0,bmp.width,bmp.height),JPG);
   bmp.Assign(JPG);
   bmp.SaveToFile(ChangeFileExt(ExtractFilePath(ParamStr(0)), '.bmp'));
   JPG.assign(bmp);
   bmp.free;
   JPG.free;
end;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:54
Zitat von Blackheart:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var JPG:TJpegImage;
      bmp: TBitmap;
begin
   JPG := TJPEGImage.Create;
   JPG.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Bild.jpg');
   bmp := TBitmap.Create;
   bmp.width:= JPG.Width;
   bmp.Height:= JPG.Height;
   bmp.canvas.StretchDraw(Rect(0,0,bmp.width,bmp.height),JPG);
   bmp.Assign(JPG);
   bmp.SaveToFile(ChangeFileExt(ExtractFilePath(ParamStr(0)), '.bmp'));
   JPG.assign(bmp);
   bmp.free;
   JPG.free;
end;
Was sollen die 2x Assign() bringen, wenn du einmal StretchDraw hast? Gibt es dafür irgendein erdenklichen Grund? Gleiches wurde schon in den Beiträgen zuvor geschrieben. Aber trotzdem einfach nochmal Code hier ohne Text reinschmeissen... Klasse! Ich empfehle erstmal die Beiträge zu lesen und auch zu beachten...
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#10

Re: BMP (nicht genügend speicher) JPG 4 MP

  Alt 17. Aug 2006, 12:55
@Blackheart: ?????????????????????????????????????????????????? ?????????????????????????????

@karstadt
Leg mal die Bitmap als private Variable in der Klasse an. Dann solltest du das Problem los sein. Delphi hat eine Größenbeschränkung für lokale Variablen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:38 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