Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bei Bitmap Arbeitsspeicher zu gering ??? (https://www.delphipraxis.net/93081-bei-bitmap-arbeitsspeicher-zu-gering.html)

matashen 31. Mai 2007 12:37


Bei Bitmap Arbeitsspeicher zu gering ???
 
Hallo zusammen,

ich hab folgendes Problem:
Ich möchte größere Bitmaps über die Zwischenablage in meine Anwendung kopieren. Dazu erzeug ich wärend der Laufzeit vier Bitmaps und kopiere das Bild aus der Zwischenablage

Delphi-Quellcode:
if (i=j) then begin;
   frag_bilder[i]:=TBitmap.create;
   frag_bilder[i].pixelformat:=pf24bit;
   end;
//Bild aus Clipboard in Bild1,2,3,4 einfügen
if Clipboard.HasFormat(CF_BITMAP) then
  begin
Bei kleineren Bildern kein Problem,
aber sobald ich relativ große Bitmaps um die 16 bsi 30MB habe bekomm ich die Fehlermeldung: "Für diesen Befehl reicht der Arbeitsspeicher nicht aus". Ich hab aber noch satte 200MB frei Laut Taskmanager.

Ich benötige das ganze für ein Zeichenprogramm, wo ich detailreiche Grafiken aus PDFs ausschneide um diese dann weiterzuverarbeiten. Leider kann ich die Bilder nicht direkt aus dem PDF auslesen, also muß ich diese über die Zwischenablage kopieren, und das in mehreren Teilen da die Zwischenablage ab einer bestimmten größe auch den Fehler. "Das gewählte Bild ist zu große für die Zwischenablage" meldet. Die Einzelbilder setz ich dann in meinem Programm wieder zu einem großen zusammen.

Ich hoffe jemand kann mir dabei helfen.


Gruß Matthias

PS: Ich verwende Delphi 4 - hängt das vieleicht damit zusammen ?

Bernhard Geyer 31. Mai 2007 12:48

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Welche Windows-Version verwendest du und bist du dir sicher alles wieder korrekt freizugeben (Check mit FastMM4).
Vermutlich ist nicht der "normale" Speicher das Problem sondern GDI-Ressourcen.

matashen 31. Mai 2007 13:21

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Ich verwende Windows 2000 und die Anwendung soll auch auf der Plattform laufen.

Also ich hab mit Sicherheit alles freigegeben, vor allem weil unter umständen der Fehler schon beim einfügen des ersten Bildes auftritt.

Wo finde ich die GDIs, was damit gemeint ist hab ich inzwischen nachgeguckt.
Kann ich durch einfügen von einem (EINEM) Bild dermassen viele Handles beanspruchen ?
Und warum gibt es dann bei kleineren Bildern kein Problem. Und warum geht das nicht bei einem dynamisch erzeugten TBitmap aber bei einer TImage-Komponente ?

das ganze check ich ned.

Bernhard Geyer 31. Mai 2007 13:38

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Passiert das immer bei den gleichen Bildern. Es gibt da einige Bitmap-Abarten die nicht so richtig Windows-Kompatible sind ...

matashen 31. Mai 2007 13:50

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Es passiert bei Bildern die ich in einem PDF markiere und stark vergrößert in die Zwischenablage lege anschließend mit meinem gezeigten Codeschnippsel einfüge. Das Bild dürfte dann so ca. 20-30MB haben

OregonGhost 31. Mai 2007 13:55

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Haben GDI-Bitmaps nicht eine gewisse Größenbegrenzung, sei es eine in Bytes oder eine maximale Abmessung? Mir war da doch so...

matashen 31. Mai 2007 14:06

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Wenn es hier eine Begrenzung gäbe würde mich das auch interessieren, vor allem wie kann ich dann mein Problem lösen
:gruebel:

OregonGhost 31. Mai 2007 14:09

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Naja, du kannst einerseits deine Bitmap in mehrere einteilen, andererseits musst du natürlich nicht unbedingt GDI-Bitmaps verwenden, es kommt ja auch eine andere Bibliothek, im Zweifel selbst geschrieben, in Frage.

matashen 31. Mai 2007 14:17

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Eine Bibliothek für Bitmaps schreiben ? Nur um die adressierungsprobleme von MS zu umschiffen ? och nee - soviel Aufwand sollte das ganze nicht werden... grummel

Gibt es eigentlich eine möglichkeit die Farbinformationen in einen Pointer zu schieben ohne das ganze drumherum. Wie es früher unter DOS gang und gäbe war. Sowas wie z.B.

<grob umrissen ohne Funktion>
Bilddaten: Pointer

^Bilddaten:=bitmap.datenfeld;

[EDIT]
Wenn natürlich jemand ne Möglichkeit kennt Bilder aus einem PDF direkt zu extrahieren, könnt ich mir das ganze zerstückeln und wieder zusammenkleben sparen...

OregonGhost 31. Mai 2007 14:23

Re: Bei Bitmap Arbeitsspeicher zu gering ???
 
Naja, die GDI ist keine Bibliothek für professionelle Bildbearbeitung, trotz aller Limitierungen, die sie mit sich herumschleppt, ist sie ja für alltägliche Zwecke ausreichend. Klar kannst du einfach Bits und Bytes schieben - eventuell ist das Thema DIBs in der GDI ein Thema für dich, da kannst du nämlich aus GDI-Bitmaps die Daten bekommen oder Daten in GDI-Bitmaps schreiben. Du selbst kannst ja mit den Daten arbeiten wie du willst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.
Seite 1 von 2  1 2      

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