![]() |
Große Bilder laden mit Win95 und 32MB RAM?
Hi,
Mein Programm lädt ein ziemlich großes Bild (2480 x 3478 Pixel) aus einer JPEG-Resource in ein TBitmap. Unter Windows95 mit 32 MB RAM klappt das allerdings nicht, es erscheint die Fehlermeldung "out of system resources". Anschließend schmiert das Programm mit dem Hinweis ab, es könne nicht in die Adresse FFFFFF schreiben. Wenn ich mit Paint ein Bild derselben Größe erzeuge, arbeitet der Rechner zwar lang und heftig, aber irgendwann erscheint das Bild dann. Woran liegt das? Sollte das Programm nicht wenigstens versuchen, die Daten auf die Festplatte auszulagern (-> virtueller Arbeitsspeicher), bevor es "out of system resources" meldet? :gruebel: |
Re: Große Bilder laden mit Win95 und 32MB RAM?
hi
Ich frag mich gerade ob es im Win 95 schon virtuell Arbeitsspeicher gibt? Weil so viel wie ich weiss gibst denn nicht. Aber bei deinem wirklichen Problem kann ich dir nicht helfen. Aber vielleicht kannst du die hälfte selber auch auf der Festplatte zischenlagern. Oder du komprimierst zuerst die Datei und dann liest du sie ein. gsh |
Re: Große Bilder laden mit Win95 und 32MB RAM?
Logisch gibt es den. Es gibt den virtuellen Adressraum und es gibt das pagefile (Auslagerungsdatei). Sonst hättets du echt mit 64 MB Probleme gehabt irgendwas auf so einem System zum Laufen zu bringen.
|
Re: Große Bilder laden mit Win95 und 32MB RAM?
Mit Win 95 hab ich noch nie so viel gearbeitet
|
Re: Große Bilder laden mit Win95 und 32MB RAM?
Zitat:
Zitat:
Zitat:
TBitmap "BMP" wird erzeugt -> "BMP" wird aus Ressource "SEITE1" geladen: -> TGraphic "tmpGraphic" wird erzeugt -> "tmpGraphic" wird aus Resourcen-Stream geladen (TResourceStream.Create(HINSTANCE, 'SEITE1', 'JPEGIMAGE'); -> "tmpGraphic" wird auf "BMP" gezeichnet -> "tmpGraphic" wird freigegeben -> Auf "BMP" werden versch. Dinge gezeichnet -> "BMP" wird auf die Drucker-Canvas gezeichnet "BMP" wird freigegeben. |
Re: Große Bilder laden mit Win95 und 32MB RAM?
Also willst du so a zeicheprogramm machen oder ?
Zitat:
|
Re: Große Bilder laden mit Win95 und 32MB RAM?
Also ich hab ein ähnliches Problem, deswegen würde es micht brennend interessieren ob's wohl noch konstruktive Problemlösungen geben wird ;-). BITTE :hi:
MFG Sergej |
Re: Große Bilder laden mit Win95 und 32MB RAM?
Zitat:
|
Re: Große Bilder laden mit Win95 und 32MB RAM?
Also ich ahb mal meinen VAter gefragt und der sagt der Schlüssel dazu heisst auslagerungsdatei. Warum es bei dir nicht geht kann sein weil auf der Festplatte nicht genügend platz ist oder weil in Windows zuwenig Arbeitsspeicher eingestellt ist. Sonst hab ich und mein Vater keine Einfälle mehr. :pale:
Sorry :wall: gsh |
Re: Große Bilder laden mit Win95 und 32MB RAM?
Zitat:
Also das liegt wohl daran das der RAM mit 32*2^20=33554432 Byte viel kleiner als das Bild mit 2480*3478*16=138007040 Byte zur verfügung stellt. Und ich vermute einfach mal ganz stark das das Working-Set welches der dolle Paint Prozeß brauch für diese Konvertierung zu groß ist (gemeint ist der mind. auf einmal verfügbare speicher um ein Teil des Bildes dieser größe zu verarbeiten). Darauf weißt dich IMHO diese Meldung hin. Falls es also mit dem Algorithmus erstmal grundsätzlich gehen würde (dazu müßte man zeigen was der minimale Working-Set Größe des JPEG->BMP Konvertierung Algo's in Abhängigkeit der Bildgröße ist) mußt du ein Programm nehmen was dies Ressourcenminimal umsetzt - UND DAS IST DEFINITIV KEIN WIN95 MIT PAINT :mrgreen: |
Re: Große Bilder laden mit Win95 und 32MB RAM?
Moin!
Grundlegende Dinge zu dem o.g. Problem: 1. Windows 95 hat noch einen sehr kleinen GDI Speicher (32 KB) für GDI Resourcen/Handles zur Verfügung und somit geht der schnell zu Ende. 2. MS Paint braucht für das Bitmap ein Handle (HBITMAP), dein TBitmap hat aber standardmässig mehr Handles (HBITMAP, HPEN, HBRUSH, HDC) und somit braucht es mehr GDI Speicher. 3. Die TBitmap Klasse hat eine komische Einschränkung was die Grösse von Bitmaps angeht. Es ist z.B. davon abhängig ob man vorher die Farbtiefe setzt und danach die Grösse des TBitmaps oder umgekehrt. Dazu findest du nähere Informationen auf der efg's ComputerLab Seite, da gibt es dazu extra ein Testprojekt. 4. Versuche so wenig wie möglich irgendwelche GDI Objekte zu benutzen zu dem Zeitpunkt wo das JPEG/Bitmap benutzt werden... MfG Muetze1 |
Re: Große Bilder laden mit Win95 und 32MB RAM?
Danke für die vielen Antworten, ich habe mich entschieden Windows95 einfach nicht mehr zu unterstützen *g* . Den GDI-Resourcenverbrauch will ich aber trotzdem optimieren, tausend Dank für die Tipps!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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